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

SQL多OR条件查询列值时,如何返回满足条件的列?

实现方法:返回匹配行同时标记符合条件的列

完全可以实现,下面提供两种常用方案:

方式1:为每个列单独标记匹配状态

通过CASE WHEN语句给每个目标列生成匹配状态标识(比如“是/否”或1/0),既能筛选出符合条件的行,也能清楚看到每列的匹配情况:

SELECT 
    id, -- 替换为你需要的唯一标识或其他字段
    -- 为每个检查列添加匹配状态
    CASE WHEN Goods_Services_String LIKE '%tokyo%' THEN '是' ELSE '否' END AS Goods_Services_Match,
    CASE WHEN Input_Materials_String LIKE '%tokyo%' THEN '是' ELSE '否' END AS Input_Materials_Match,
    CASE WHEN Property_Plant_Equipment_String LIKE '%tokyo%' THEN '是' ELSE '否' END AS Property_Plant_Equipment_Match,
    CASE WHEN Production_Process_String LIKE '%tokyo%' THEN '是' ELSE '否' END AS Production_Process_Match,
    CASE WHEN Capital_Expenditures_String LIKE '%tokyo%' THEN '是' ELSE '否' END AS Capital_Expenditures_Match,
    CASE WHEN Employee_Locations_String LIKE '%tokyo%' THEN '是' ELSE '否' END AS Employee_Locations_Match,
    CASE WHEN Contractors_Locations_String LIKE '%tokyo%' THEN '是' ELSE '否' END AS Contractors_Locations_Match,
    CASE WHEN Research_And_Development_Desc_String LIKE '%tokyo%' THEN '是' ELSE '否' END AS R_D_Match,
    CASE WHEN Distribution_String LIKE '%tokyo%' THEN '是' ELSE '否' END AS Distribution_Match,
    CASE WHEN Sales_And_Marketing_Desc_String LIKE '%tokyo%' THEN '是' ELSE '否' END AS Sales_Marketing_Match,
    -- 按需添加原表其他字段
    ...
FROM your_table_name -- 替换为实际表名
WHERE 
    Goods_Services_String LIKE '%tokyo%' OR 
    Input_Materials_String LIKE '%tokyo%' OR 
    Property_Plant_Equipment_String LIKE '%tokyo%' OR 
    Production_Process_String LIKE '%tokyo%' OR 
    Capital_Expenditures_String LIKE '%tokyo%' OR 
    Employee_Locations_String LIKE '%tokyo%' OR 
    Contractors_Locations_String LIKE '%tokyo%' OR 
    Research_And_Development_Desc_String LIKE '%tokyo%' OR 
    Distribution_String LIKE '%tokyo%' OR 
    Sales_And_Marketing_Desc_String LIKE '%tokyo%';

方式2:合并所有匹配的列名到一个字段

如果希望直接看到所有命中条件的列名,可以用字符串拼接函数将匹配的列名合并成一个字段,不同数据库的拼接函数略有差异,以下是MySQL示例:

SELECT 
    id,
    CONCAT_WS(', ',
        CASE WHEN Goods_Services_String LIKE '%tokyo%' THEN 'Goods_Services_String' END,
        CASE WHEN Input_Materials_String LIKE '%tokyo%' THEN 'Input_Materials_String' END,
        CASE WHEN Property_Plant_Equipment_String LIKE '%tokyo%' THEN 'Property_Plant_Equipment_String' END,
        CASE WHEN Production_Process_String LIKE '%tokyo%' THEN 'Production_Process_String' END,
        CASE WHEN Capital_Expenditures_String LIKE '%tokyo%' THEN 'Capital_Expenditures_String' END,
        CASE WHEN Employee_Locations_String LIKE '%tokyo%' THEN 'Employee_Locations_String' END,
        CASE WHEN Contractors_Locations_String LIKE '%tokyo%' THEN 'Contractors_Locations_String' END,
        CASE WHEN Research_And_Development_Desc_String LIKE '%tokyo%' THEN 'Research_And_Development_Desc_String' END,
        CASE WHEN Distribution_String LIKE '%tokyo%' THEN 'Distribution_String' END,
        CASE WHEN Sales_And_Marketing_Desc_String LIKE '%tokyo%' THEN 'Sales_And_Marketing_Desc_String' END
    ) AS Matching_Columns,
    -- 按需添加原表其他字段
    ...
FROM your_table_name -- 替换为实际表名
WHERE 
    Goods_Services_String LIKE '%tokyo%' OR 
    Input_Materials_String LIKE '%tokyo%' OR 
    Property_Plant_Equipment_String LIKE '%tokyo%' OR 
    Production_Process_String LIKE '%tokyo%' OR 
    Capital_Expenditures_String LIKE '%tokyo%' OR 
    Employee_Locations_String LIKE '%tokyo%' OR 
    Contractors_Locations_String LIKE '%tokyo%' OR 
    Research_And_Development_Desc_String LIKE '%tokyo%' OR 
    Distribution_String LIKE '%tokyo%' OR 
    Sales_And_Marketing_Desc_String LIKE '%tokyo%';

注:若使用SQL Server,将CONCAT_WS替换为STRING_AGG;PostgreSQL同样使用STRING_AGG,需调整语法细节。

内容的提问来源于stack exchange,提问作者Adam Polak Moetsi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 09:02:53