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

我有以下问题

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

我期望这个返回所有的结果,其中测试人员不是字符串 username,但这不工作。我想我正在寻找的 Like运算符的逆,但我不确定?在我的搜索中,我已经找到了数字的解(这就是我得到 < > 的地方) ,但是这似乎不适用于字符串。

289479 次浏览

您的 where子句将返回所有 tester不匹配 username的行以及 tester不为空的行。

如果要包含 NULL,请尝试:

where tester <> 'username' or tester is null

如果您正在寻找不包含单词“ username”作为子字符串的字符串,那么可以使用 like:

where tester not like '%username%'

尝试以下查询

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

这里可以使用 strcomp函数(当字符串相同时返回0) :

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

NULL 安全条件看起来是这样的:

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

另一种得到结果的方法

SELECT * from table WHERE SUBSTRING(tester, 1, 8)  <> 'username' or tester is null