SQL LIKE命令不包含某些数据
本文关键字:数据 包含某 LIKE 命令 SQL | 更新日期: 2023-09-27 17:54:05
数据如下:
代码:名称:罗杰
职业:工程师
名称:简
职业:工程师
string occ = "software engineers";
我的SQL命令:(删除参数化查询只是为了使事情清楚)
"SELECT * FROM Users WHERE Occupation LIKE '%" + occ + "%'"
但是,这不会返回Users,因为在参数occ的末尾放置了一个额外的's'。如果我将occ的值更改为'software engineer',它将返回两个用户。如何更改查询,使其包含与参数相似的所有数据?
即,包括职业为"软件工程师"answers"软件工程师"的所有用户
处理这个问题有多种方法。你不能只是告诉数据库给你任何"看起来像这个搜索查询"的记录。
你也许应该更好地定义一下你所追求的灵活性。
对于这个特定的示例,以及其他类似的示例,您可以执行
SELECT * FROM Users Where CONTAINS(Occupation,@occ)
因此,如果实际的数据库占用包含的occ搜索查询值在它的任何地方,它将返回该记录。
还请注意,我使用了@occ你基本上不应该使用
"SELECT * FROM Users Where CONTAINS(Occupation," + occ + ")";
绝对最坏的情况是"occ"实际上是由应用程序的用户提供的,因为这是一个巨大的安全漏洞(SQL注入)
但是,即使它是由您自己的代码以某种方式提供的,您仍然应该使用SQL参数向@occ参数添加值。请查看sql参数和如何使用它们
你可以试试:
"SELECT * FROM Users WHERE Occupation LIKE '%" + occ + "%' OR " +
ooc + " like '%' + Occupation + '%'"