MYSQL——mysql檢索不包含字母U的資料

李大嘟嘟發表於2024-07-09

2024/07/09
1. NOT LIKE
2. IS NOT、<>、!=
3. NOT IN

如題,正確答案如下:

SELECT *
FROM your_table_name
WHERE your_column_name NOT LIKE '%U%';

今天寫類似檢索語句時,腦子突然一懵,寫成了IS NOT '%UD%',如下:

SELECT *
FROM your_table_name
WHERE your_column_name IS NOT '%D%';

IS NOT 等價於<>或者!=,表示不等於,而非不包含,不過IS NOT常用於IS NOT NULL<>或者!=後則通常跟具體欄位值。
IS NOT '%D%'這種表達是不正確的,它試圖將一個欄位與包含萬用字元 % 的字串進行比較,這在 SQL 中是不允許的。萬用字元 % 通常用於 LIKE 或 NOT LIKE 運算子中,而不是用於 =、<>、!= 或 IS NOT 這樣的比較運算子

還有一個NOT IN,我覺得也有必要記到此處。
NOT IN可以排除多個特定的值,大約相當於把好幾個!=<>合併了,案例如下:

SELECT *
FROM your_table_name
WHERE your_column_name NOT IN ('U', 'another_value');
SELECT *
FROM your_table_name
WHERE your_column_name != 'U'
  AND your_column_name != 'another_value';
SELECT *
FROM your_table_name
WHERE your_column_name <> 'UD'
  AND your_column_name <> 'another_value';

相關文章