SQL查询如何仅返回WHERE子句多条件匹配的列 未匹配列返回NULL
实现SQL语句
你可以通过CASE WHEN对单个字段做匹配校验,符合规则返回原值、不符合返回NULL即可,写法如下:
SELECT id, CASE WHEN first_name LIKE '%AB%' THEN first_name ELSE NULL END AS first_name, CASE WHEN last_name LIKE '%AB%' THEN last_name ELSE NULL END AS last_name FROM `user` WHERE first_name LIKE '%AB%' OR last_name LIKE '%AB%';
注意事项
- 不同数据库对关键字的转义规则不同,如果
user作为表名报错,可以根据你用的数据库换成双引号"user"、方括号[user]即可 - 如果需要大小写不敏感匹配,可替换匹配关键字:MySQL默认
LIKE不区分大小写,PostgreSQL可以把LIKE换成ILIKE,SQL Server可以加COLLATE规则实现
内容的提问来源于stack exchange,提问作者Niranjan
相关产品推荐
相关产品推荐

