排除点后面的单词“。”在SQL中

时间:2013-09-12 05:44:44

标签: c# sql winforms

我使用ms sql compact 4.0 for db,我只想问我如何在点“。”之后排除单词。添加我的上下文提示。

与我的数据库中的示例类似:http://oi41.tinypic.com/2f06053.jpg

对于TypeName“指标”,例如在Indicators.RelativeStrengthIndex中,我只想保留单词“Indicators”并删除单词“.RelativeStrengthIndex”或点后面。和其他人一样。

DataExplorer://ObjDB.sdf/Table/[tb_CsType]

出现在我的上下文提示中:

http://oi41.tinypic.com/2j5xczm.jpg

我的自动填充代码:

string conStr = @"Data Source=C:\Users\z\Desktop\Prot\DB\ObjDB.sdf";

                SqlCeDataReader sqldrAllData;
                SqlCeConnection sqlCon = new SqlCeConnection(conStr);

                ///1
                SqlCeCommand sqlCmd = new SqlCeCommand("Select TypeName, Syntax, Description From tb_CsType", sqlCon);

                ///2
                //SqlCeCommand sqlCmd2 = new SqlCeCommand("Select TypeName, Syntax, Description From tb_CsMember", sqlCon);

                sqlCon.Open();
                sqldrAllData = sqlCmd.ExecuteReader();

                List<string> lstTypeName = new List<string>();
                while (sqldrAllData.Read())
                {
                    lstTypeName.Add(sqldrAllData["TypeName"].ToString());
                }

                foreach (var word in lstTypeName)
                    yield return (new Autoc(word) { ImageIndex = 3 });


                sqlCon.Close();

然后问题是我怎么能在“。”之后排除单词。在我的SQL中。提前致谢!更多力量!

3 个答案:

答案 0 :(得分:1)

在你的SQL查询中试试这个

Select TypeName, Syntax,LEFT(Description, CHARINDEX('.', Description) - 1)  From tb_CsType

我认为就像这个问题一样 SQL Server replace, remove all after certain character

对于Sql Server Compact版本,没有Left功能。在紧凑的编辑中试试这个。

SELECT TypeName, Syntax, SUBSTRING(Description, 0, CHARINDEX('.', Description)) AS Desc FROM tb_CsType

这将删除'。'之后的其余字符串值。在SUBSTRING函数中,起始值0表示从单词的开头

答案 1 :(得分:0)

您可以使用子字符串(字符串,位置,长度)

SELECT TypeName, Syntax,
SUBSTRING(Description, 
  CHARINDEX('.', Description, (CHARINDEX('.', Description) + 1)) + 1, 
  LEN(Description) - CHARINDEX('.',Description) + 1)
From tb_CsType;

或者您可以在添加到列表之前删除.NET中的字符串:

List<string> lstTypeName = new List<string>();
while (sqldrAllData.Read())
{
    var s = sqldrAllData["TypeName"].ToString();
    lstTypeName.Add(s.IndexOf('.') > 0 ? s.Substring(0, '.') : s);
}

答案 2 :(得分:0)

Sql Server CE不支持函数LEFT,请参阅list of supported functions,但您可以在案例中使用SUBSTRINGCHARINDEX的组合:

string typedWord = "YourTypedWord" + "%";
string sql = string.Format("select TypeName, Syntax, SUBSTRING(Description, 0, CHARINDEX('.', Description)) as Description from tb_CsType WHERE Description LIKE '{0}'", typedWord);