我想找到一个 SQL 查询来查找 field1不包含 $x 的行。我怎么能这么做?
SELECT * FROM table WHERE field1 NOT LIKE '%$x%';(确保事先正确地转义 $x 以避免 SQL 注入)
SELECT * FROM table WHERE field1 NOT LIKE '%$x%';
编辑: NOT IN做了一些不同的东西-你的问题不是完全清楚,所以选择哪一个使用。LIKE 'xxx%'可以使用索引。LIKE '%xxx'或 LIKE '%xxx%'不能。
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%';