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"软件工程师"的所有用户

SQL LIKE命令不包含某些数据

处理这个问题有多种方法。你不能只是告诉数据库给你任何"看起来像这个搜索查询"的记录。

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

对于这个特定的示例,以及其他类似的示例,您可以执行

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 + '%'"