You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取SQL WHERE条件中匹配到的列的对应值?

解决方案

你要的查询逻辑用标准SQL的CASE表达式就可以实现,另外注意你示例SQL里的小问题:模糊匹配需要用LIKE关键字而不是=,否则%不会作为通配符生效。

通用兼容写法(支持所有主流数据库 MySQL/PostgreSQL/SQL Server等)

SELECT 
  id,
  CASE 
    WHEN name LIKE '%fir%' THEN name
    WHEN Location LIKE '%fir%' THEN Location
  END AS matched_column_value
FROM your_table_name 
WHERE name LIKE '%fir%' OR Location LIKE '%fir%';

注意替换SQL中的your_table_name为你实际的表名

逻辑说明

  • 因为WHERE条件已经过滤出了至少有一个列匹配关键词的行,所以CASE表达式不会返回空值
  • 上面的写法默认优先返回name列的匹配结果,如果某行的name和Location同时都匹配关键词,会取name的值;如果你需要优先返回Location的值,调换两个WHEN判断的顺序即可
  • 你提供的样例数据执行上面的SQL时,匹配到name列的First,matched_column_value就会返回First,完全符合你的预期

特定数据库简化写法

如果是用MySQL,还可以用IF+COALESCE的组合简化写法:

SELECT 
  id,
  COALESCE(IF(name LIKE '%fir%', name, NULL), IF(Location LIKE '%fir%', Location, NULL)) AS matched_column_value
FROM your_table_name 
WHERE name LIKE '%fir%' OR Location LIKE '%fir%';

内容的提问来源于stack exchange,提问作者Slr Shoppee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 08:36:00