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