SQL:文字列を実行する方法が等しくない


114

次のクエリがあります

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

私はこれがテスターが文字列usernameではないすべての結果を返すことを期待していますが、これは機能しません。Like演算子の逆を探していると思いますが、よくわかりません。私の検索では、数値の解決策を見つけました(ここから<>を取得しました)が、これは文字列では機能していないようです。


5
値に関して問題があるNULL値はありますか?(NULL <> 'username' => NULL=> false)?
Wrikken、2013年

回答:


174

あなたのwhere句は、すべての行を返しますtester一致していないusername、どこtesternullではないが。

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 2018年

ちょうどことに気づいた<=>オペレータのみに存在するMySQLより多くの情報のために、世界を参照<=>何であるか
トップマスター


7

strcomp関数は、ここで適切であるかもしれない(文字列が同一である0を返します)。

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.