我使用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中。提前致谢!更多力量!
答案 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,但您可以在案例中使用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);