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.


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%'

42

Coba kueri berikut

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

20

Kondisi aman NULL akan terlihat seperti:

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

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


7

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

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

1

Cara lain untuk mendapatkan hasil

SELECT * from table WHERE SUBSTRING(tester, 1, 8)  <> 'username' or tester is null
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.