繁体   English   中英

SQL 查询其中字段不包含 $x

[英]SQL Query Where Field DOES NOT Contain $x

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

这是一个什么样的领域? 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%';

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM