133

我有以下查询

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

我希望这会返回 tester 不是字符串的所有结果username,但这不起作用。我想我正在寻找Like运算符的倒数,但我不确定?在我的搜索中,我找到了数字的解决方案(这就是我得到 <> 的地方),但这似乎不适用于字符串。

4

6 回答 6

198

您的子句将where返回tester不匹配且不为空的所有行。usernametester

如果要包含 NULL,请尝试:

where tester <> 'username' or tester is null

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

where tester not like '%username%'
于 2013-05-01T18:58:08.313 回答
45

尝试以下查询

select * from table
where NOT (tester = 'username')
于 2013-05-01T18:58:38.453 回答
24

NULL 安全条件如下所示:

select * from table
where NOT (tester <=> 'username')
于 2016-09-01T18:00:42.203 回答
8
select * from table
where tester NOT LIKE '%username%';
于 2013-05-01T19:00:34.817 回答
7

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

 SELECT * from table WHERE Strcmp(user, testername) <> 0;
于 2014-06-18T04:37:59.910 回答
1

获得结果的另一种方法

SELECT * from table WHERE SUBSTRING(tester, 1, 8)  <> 'username' or tester is null
于 2019-08-27T06:00:57.647 回答