我的数据如下:
姓名:罗杰 职业:工程师 姓名: Jane 职业:工程师
代码:
string occ = "software engineers";My:(删除了参数化查询,只是为了说明目前的情况)
"SELECT * FROM Users WHERE Occupation LIKE '%" + occ + "%'"但是,这不会返回用户,因为一个额外的's‘放在参数occ的末尾。如果我将occ的值更改为“软件工程师”,它将返回这两个用户。如何更改查询,使其包含与参数类似的所有数据?
也就是说,包括所有从事“软件工程师”和“软件工程师”职业的用户。
发布于 2015-06-07 08:20:37
有多种方法来处理这个问题。您不能只是告诉DB提供任何“类似于此搜索查询”的记录。
您可能应该更好地定义您所追求的那种灵活性。
对于这个特定的例子,以及任何其他只在后缀中不同的例子,您可以这样做。
SELECT * FROM Users Where CONTAINS(Occupation,@occ)因此,如果实际的DB占用中的任何地方都包含 occ搜索查询值,它将返回该记录。
还请注意,我使用了@occ,您根本不应该这样做。
"SELECT * FROM Users Where CONTAINS(Occupation," + occ + ")";最糟糕的情况是,"occ“实际上是由应用程序的用户提供的,因为这是一个巨大的安全漏洞(SQL注入)。
但是,即使它是从您自己的代码中提供的,您仍然应该使用SQL参数将值添加到@occ参数中。请查看sql参数以及如何使用它们。
发布于 2015-06-07 08:20:46
你可以试试这个:
"SELECT * FROM Users WHERE Occupation LIKE '%" + occ + "%' OR " +
ooc + " like '%' + Occupation + '%'"https://stackoverflow.com/questions/30691413
复制相似问题