SQL:如何执行字符串不等于


114

我有以下查询

SELECT * FROM table
WHERE tester <> 'username';

我期望它返回所有结果,其中tester不是字符串username,但这不起作用。我想我正在寻找Like运算符的反函数,但不确定吗?在搜索中,我找到了数字的解决方案(这是我从<>那里获得的),但这似乎不适用于字符串。


5
您的价值观是否存在NULL价值观方面的问题?(NULL <> 'username' => NULL=>否)?
2013年

Answers:


174

您的where条款将返回所有的行tester不匹配,username并在tester不为空。

如果要包括NULL,请尝试:

where tester <> 'username' or tester is null

如果要查找不包含单词“ username”作为子字符串的字符串,则like可以使用:

where tester not like '%username%'

42

尝试以下查询

select * from table
where NOT (tester = 'username')

20

NULL安全条件如下所示:

select * from table
where NOT (tester <=> 'username')

是的!这是唯一对我有用的东西,因为我有and链。不知道<=>运算符。谢谢!
varta

刚刚注意到,<=>操作员仅存在于MySQL世界上,有关更多信息,请参阅<=>
Top-Master


7

strcomp函数可能在此处合适(当字符串相同时返回0):

 SELECT * from table WHERE Strcmp(user, testername) <> 0;

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.