我的数据如下:
姓名:罗杰
职业:工程师
姓名:简
职业:工程师
代码:
string occ = "software engineers";
我的SQL命令:(删除参数化查询只是为了让事情变得清晰)
"SELECT * FROM Users WHERE Occupation LIKE '%" + occ + "%'"
然而,这不会返回用户,因为在参数occ的末尾放置了一个额外的's'。如果我将occ的值更改为“软件工程师”,则返回两个用户。如何更改查询,使其包含与参数类似的所有数据?
即包括所有拥有'软件工程师'和'软件工程师'
职业的用户答案 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 + '%'"