SQL LIKE命令不包括某些数据

时间:2015-06-07 08:12:15

标签: c# sql asp.net

我的数据如下:

  

姓名:罗杰

     

职业:工程师

     

姓名:简

     

职业:工程师

代码:

string occ = "software engineers";

我的SQL命令:(删除参数化查询只是为了让事情变得清晰)

"SELECT * FROM Users WHERE Occupation LIKE '%" + occ + "%'"

然而,这不会返回用户,因为在参数occ的末尾放置了一个额外的's'。如果我将occ的值更改为“软件工程师”,则返回两个用户。如何更改查询,使其包含与参数类似的所有数据?

即包括所有拥有'软件工程师'和'软件工程师'

职业的用户

2 个答案:

答案 0 :(得分:0)

有多种方法可以解决这个问题。您不能告诉数据库为您提供任何类似于此搜索查询的记录"。

你应该更好地定义一下你所追求的灵活性。

对于这个具体的例子,任何其他喜欢它的人只有后缀不同,你可以做

SELECT * FROM Users Where CONTAINS(Occupation,@occ)

因此,如果实际数据库占用包含其中任何位置的搜索查询值,它将返回该记录。

另请注意,我使用过@occ 你应该基本上不做

"SELECT * FROM Users Where CONTAINS(Occupation," + occ + ")";

绝对最坏的情况是" occ"实际上是从您的应用程序的用户提供,因为这是一个巨大的安全漏洞(SQL注入)

但即使它以某种方式从您自己的代码提供,您仍应使用SQL参数将值添加到@occ参数。 请查看sql参数以及如何使用它们。

答案 1 :(得分:0)

你可以试试这个:

"SELECT * FROM Users WHERE Occupation LIKE '%" + occ + "%' OR " +
  ooc + " like '%' + Occupation + '%'"