c# - 比较单词并获得完全匹配

标签 c# asp.net sql search

现在这很棘手......我希望我能解释清楚......

我有一个表,里面有名字,我需要将它与我提供的词进行比较,并得到完全匹配的结果..

现在我说这很棘手,因为我尝试了这个查询,它给了我一组名字。它包含完全匹配的词和相似的词...

这是我做的:

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

Now if the word is 123 it should return abc123 and xyz123 if c123 then return abc123 and NOT pqc1238 and xyz123

if 238 then just return pqc1238....

我希望我已经足够清楚了......相信我,我也不是第一次就明白了

任何建议都可以更好地找到单词之间的精确匹配..因为 LIKE 是不够的..

谢谢

最佳答案

你几乎是对的,但你不理解 % 通配符。

在 SQL 中,% 通配符将匹配任意长度的任意字符串。您一开始就想要它,因为您不关心主要部分。

但是,当您将它放在 LIKE 匹配字符串的末尾时,如果您的字符串之后有任何内容,它将允许匹配。

所以,以你为例

abc123

xyz123

pqc1238

Now if the word is 123 it should return abc123 and xyz123 if c123 then return abc123 and >NOT pqc1238 and xyz123

if 238 then just return pqc1238....

你有 %123% 你在说“我想要所有以任何内容开头,然后是 '123',然后以任何内容结尾的字符串。”这将匹配在任何时候包含“123”的任何字符串。

你想说的是“我想要所有以任何东西开头的字符串,然后是‘123’,然后是结尾。”所以,那是 %123。

最后,要获得与 like 的精确匹配,只需省略任何通配符即可。

This page对 SQL 通配符有很好的概述。

关于c# - 比较单词并获得完全匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2163771/

相关文章:

c# - 如何将 C++ 类转换为托管类并在其中调用纯虚函数?

c# - 从后面的代码添加用户控件

mysql - 如何使用sql获取过时天数

mysql - 公司、产品、配件和协会的数据库设计

c# - android 与 sql server 2008 r2 通过 c# webservice 的连接

c# - "-+"运算符 c# MONO 2.10.12

c# - 建立在自定义流之上

javascript - XMLHttpRequest 发送文件请求对于大文件给出 404 错误

c# - 从转发器 asp.net c# 中的文本框获取值

mysql - 如何在联接中对值进行分组