mysql SQL Query Where Field DOES NOT CONTAIN $x

2ekbmq32  于 12个月前  发布在  Mysql
关注(0)|答案(3)|浏览(84)

我想查找一个SQL查询,以查找field 1不包含$x的行。我该怎么做?

zbsbpyhn

zbsbpyhn1#

这是什么领域?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%';
2skhul33

2skhul332#

SELECT * FROM table WHERE field1 NOT LIKE '%$x%';(确保事先正确转义$x以避免SQL注入)
编辑:NOT IN做了一些不同的事情-你的问题不是很清楚,所以选择使用哪一个。LIKE 'xxx%'可以使用索引。LIKE '%xxx'LIKE '%xxx%'不能。

lg40wkob

lg40wkob3#

替代方法:

SELECT * FROM x WHERE CHARINDEX('$x', field1, 0)<1

说明:它从位置0开始搜索'$x'的出现。并且只选择count“小于1”的地方。

相关问题