0

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

就像我的数据库中的示例:http: //oi41.tinypic.com/2f06053.jpg

对于 TypeName "Indicators",例如在 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 中。提前致谢!更多的力量!

4

3 回答 3

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 表示从单词的开头

于 2013-09-12T06:22:06.737 回答
0

您可以使用 substring(string, pos, length)

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);
}
于 2013-09-12T06:53:26.720 回答
0

LEFTSql Server CE 不支持该功能,请参阅支持的功能列表,但您可以在您的情况下使用SUBSTRING和的组合CHARINDEX

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);
于 2013-09-12T07:04:05.393 回答