MYSQL——mysql检索不包含字母U的数据

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';
posted @ 2024-07-09 16:17  李大嘟嘟  阅读(9)  评论(0编辑  收藏  举报