字段不包含 $x 的 SQL 查询

我想找到一个 SQL 查询来查找 field1不包含 $x 的行。我怎么能这么做?

682794 次浏览

SELECT * FROM table WHERE field1 NOT LIKE '%$x%';(确保事先正确地转义 $x 以避免 SQL 注入)

编辑: NOT IN做了一些不同的东西-你的问题不是完全清楚,所以选择哪一个使用。LIKE 'xxx%'可以使用索引。LIKE '%xxx'LIKE '%xxx%'不能。

这是什么地方?IN 运算符不能与单个字段一起使用,但可用于子查询或预定义列表:

-- subquery
SELECT a FROM x WHERE x.b NOT IN (SELECT b FROM y);
-- predefined list
SELECT a FROM x WHERE x.b NOT IN (1, 2, 3, 6);

如果您正在搜索字符串,那么可以使用 LIKE 操作符(但是这会比较慢) :

-- Finds all rows where a does not contain "text"
SELECT * FROM x WHERE x.a NOT LIKE '%text%';

如果你限制它,你正在搜索的字符串必须从给定的字符串开始,它可以使用索引(如果有一个索引的字段) ,并相当快:

-- Finds all rows where a does not start with "text"
SELECT * FROM x WHERE x.a NOT LIKE 'text%';