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

如何遍历数据表动态生成SQL CASE语句

最优实现方案

优先推荐直接在数据库中用SQL动态生成,无需导出数据到外部工具,效率最高且能自动处理转义问题,适配所有数据量场景。

1 通用SQL生成方法

假设你的两列表名为customer_mapping,对应字段为CUSTOMER_NAME、CUSTOMER_TYPE,可直接执行以下查询得到你需要的CASE语句:

MySQL/PostgreSQL 写法

SELECT CONCAT(
    'CASE ',
    GROUP_CONCAT(
        'WHEN CUSTOMER_NAME = ''', REPLACE(CUSTOMER_NAME, '''', ''''''), ''' THEN ''', REPLACE(CUSTOMER_TYPE, '''', ''''''), ''' '
        SEPARATOR ''
    ),
    'ELSE NULL END AS CUSTOMER_TYPE'
) AS generated_case_statement
FROM customer_mapping;

SQL Server 写法

SELECT 'CASE ' + STRING_AGG(
    'WHEN CUSTOMER_NAME = ''' + REPLACE(CUSTOMER_NAME, '''', '''''') + ''' THEN ''' + REPLACE(CUSTOMER_TYPE, '''', '''''') + ''' ',
    ''
) + 'ELSE NULL END AS CUSTOMER_TYPE' AS generated_case_statement
FROM customer_mapping;

2 小批量数据Excel快速生成法

如果数据量在几千条以内,也可以用Excel快速生成:

  • 把CUSTOMER_NAME列内容粘贴到Excel A列,CUSTOMER_TYPE列内容粘贴到B列
  • C1单元格输入公式:="WHEN CUSTOMER_NAME = '"&SUBSTITUTE(A1,"'","''")&"' THEN '"&SUBSTITUTE(B1,"'","''")&"' "
  • 下拉C列公式填充所有行,复制C列所有内容,前后拼接CASE 和ELSE NULL END AS CUSTOMER_TYPE即可。

注:所有方法均内置了单引号转义逻辑,避免字段值包含单引号时生成的CASE语句出现语法错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 11:00:01