SQL: Bagaimana melakukan string tidak sama

114

Saya memiliki pertanyaan berikut

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

Saya mengharapkan ini untuk mengembalikan semua hasil di mana penguji bukan stringnya username, Tapi ini tidak berfungsi. Saya pikir saya mencari kebalikan dari Likeoperator tetapi saya tidak yakin? Dalam pencarian saya, saya telah menemukan solusi untuk angka (dari situlah saya mendapatkan <> dari), tetapi ini tampaknya tidak berfungsi dengan string.

Dan Ciborowski - MSFT
sumber
5
Apakah nilai Anda bermasalah dengan NULLnilai? ( NULL <> 'username' => NULL=> false)?
Wrikken

Jawaban:

174

whereKlausa Anda akan mengembalikan semua baris yang testertidak cocok usernameDAN testeryang tidak nol.

Jika Anda ingin memasukkan NULL, coba:

where tester <> 'username' or tester is null

Jika Anda mencari string yang tidak mengandung kata "username" sebagai substring, maka likebisa digunakan:

where tester not like '%username%'
Gordon Linoff
sumber
42

Coba kueri berikut

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

Kondisi aman NULL akan terlihat seperti:

select * from table
where NOT (tester <=> 'username')
Viktor Zeman
sumber
Ya !, ini adalah satu-satunya hal yang berhasil untuk saya, karena saya memiliki rantai dan. Tidak tahu operator <=>. Terima kasih!
varta
Baru perhatikan bahwa <=>operatornya hanya ada di MySQLdunia, untuk info lebih lanjut lihat apa itu <=>
Top-Master
8
select * from table
where tester NOT LIKE '%username%';
Ömer Faruk Almalı
sumber
7

The strcompFungsi dapat yang sesuai di sini (kembali 0 ketika string adalah identik):

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

Cara lain untuk mendapatkan hasil

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