MySQL查询实现:排除含'foo'条目但保留'foo bar'的方法
MySQL查询语句实现需求
可以通过组合WHERE条件精准筛选符合要求的数据,以下是两种常用的写法:
写法一:直接指定保留项+排除特定前缀的其他值
SELECT * FROM your_table WHERE column_name = 'foo bar' OR column_name NOT LIKE 'foo%';
逻辑说明:
column_name = 'foo bar':明确保留值为foo bar的条目column_name NOT LIKE 'foo%':保留所有不以foo开头的条目,自然排除了仅为foo和foo xxx这类以foo开头的其他值
写法二:反向排除不符合要求的条目
SELECT * FROM your_table WHERE NOT ( column_name = 'foo' OR (column_name LIKE 'foo %' AND column_name != 'foo bar') );
逻辑说明:
- 括号内定义了需要排除的两类数据:
column_name = 'foo':排除仅含foo的条目column_name LIKE 'foo %' AND column_name != 'foo bar':排除以foo(foo加空格)开头但不是foo bar的条目(即foo xxx这类情况)
- 外层的
NOT反转排除规则,最终得到符合要求的数据
示例验证
假设表中有以下数据:
| column_name |
|---|
| foo |
| foo bar |
| foo test |
| hello world |
| foo xxx |
执行上述任一语句后,返回结果为:
| column_name |
|---|
| foo bar |
| hello world |
内容的提问来源于stack exchange,提问作者Jack BeNimble
相关产品推荐
相关产品推荐

