现在这很棘手......我希望我能解释清楚......
我有一个在其中命名的表格,我需要将它与我提供的单词进行比较并获得完全匹配...
现在我说它很棘手,因为我尝试了这个查询,它给了我一组名字。它包含完全匹配的单词以及类似的单词......
这就是我所做的:
DataTable dt = new DataTable();
SqlConnection connection = new SqlConnection();
connection.ConnectionString = ConfigurationManager.ConnectionStrings["xyz "].ConnectionString;
connection.Open();
SqlCommand sqlCmd = new SqlCommand("SELECT Names FROM Machines WHERE Name Like '%' + @userName + '%'", connection);
SqlDataAdapter sqlDa = new SqlDataAdapter(sqlCmd);
sqlCmd.Parameters.AddWithValue("@userName", userName);
sqlDa.Fill(dt);
connection.Close();
现在我想要的是......例如。
如果数据库有三个单词
ABC123
XYZ123
pqc1238
现在如果这个词是123那就应该 返回abc123和xyz123 如果c123然后返回abc123而不是pqc1238和xyz123
如果238然后只返回pqc1238 ....
我希望我足够清楚......相信我,我第一次没有得到它
任何建议都可以更好地找到单词之间的确切匹配。考虑LIKE是不够的..
由于
答案 0 :(得分:2)
我不会称之为精确匹配,但如果您正在寻找以给定单词结尾的单词,请尝试:
"SELECT Names FROM Machines WHERE Name Like '%' + @userName"
没有第二个%
答案 1 :(得分:2)
你几乎没有,但你不理解%通配符。
在SQL中,%通配符将匹配任何长度的任何字符串。你最初想要的是因为你不关心领导部分。
然而,当你把它放在LIKE匹配字符串的末尾时,如果你的字符串后面有任何内容,它将允许匹配。
所以,举个例子
ABC123
XYZ123
pqc1238
现在如果单词是123,它应该返回abc123和xyz123,如果c123然后返回abc123和> NOT pqc1238和xyz123
如果238然后只返回pqc1238 ....
你有%123%你说“我想要所有字符串以任何东西开头,然后有'123',然后以任何结尾。”这将匹配任何点包含'123'的任何字符串。
你想说的是“我想要所有以任何东西开头的字符串,然后是'123',然后结束。”所以,那就是%123。
最后,要获得与之类似的精确匹配,只需留下任何通配符。
This page对SQL通配符有很好的概述。
答案 2 :(得分:1)
根据我的理解,您似乎只希望字符串以搜索模式结尾,因此您只需省略选择中的最后一个“%”。
SqlCommand sqlCmd = new SqlCommand("SELECT Names FROM Machines WHERE Name Like '%" + @userName + "'", connection);
答案 3 :(得分:1)
对我来说,看起来你正在搜索以@userName结尾的字符串。
SqlCommand sqlCmd = new SqlCommand("SELECT Names FROM Machines WHERE Name Like '%' + @userName", connection);
答案 4 :(得分:1)
它读起来好像你想要一个形式的命令从机器中选择名称,如'%xxx',其中“xxx”是你的单词
如果是这种情况,并且@userName是你的话,那么你需要像
这样的东西SqlCommand sqlCmd = new SqlCommand("SELECT Names FROM Machines WHERE Name Like '%' + @userName", connection);
答案 5 :(得分:1)
为什么不尝试使用LINQ?做点什么;
var query = from c in db.Machines where c.Name.EndsWith("123") select c.Names;
我希望这会有所帮助。
答案 6 :(得分:1)
在我看来,您希望所有以特定单词结尾的记录。在这种情况下,你只需删除你添加到查询中的最后一个'%'。
SqlCommand sqlCmd = new SqlCommand("SELECT Names FROM Machines WHERE Name Like '%' + @userName", connection);
希望这就是你需要的东西