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

使用STRING_AGG动态生成多变量SQL字符串时的变量匹配问题

问题分析与解决

你的核心问题是:使用STRING_AGG时没有根据临时表中不同的CheckColumn值匹配对应的变量,而是统一调用了@v1_YYYY,导致两行都输出了同一个变量。

正确写法

情况1:生成包含变量名的目标字符串(即你期望的格式)

DECLARE @sql varchar(100);
SELECT @sql = STRING_AGG(
    CheckColumn + ' EQ @' + 
    CASE CheckColumn 
        WHEN 'GJAHR' THEN 'v1_YYYY' 
        WHEN 'LMNON' THEN 'v2_MM' 
    END, 
    ' AND '
) 
FROM #table_A;

执行后@sql的值为:GJAHR EQ @v1_YYYY AND LMNON EQ @v2_MM

情况2:生成包含变量实际值的字符串

如果你的真实需求是拼接变量的具体值(比如GJAHR EQ '2022' AND LMNON EQ '07'),可以用以下写法:

DECLARE @sql varchar(100);
SELECT @sql = STRING_AGG(
    CheckColumn + ' EQ ''' + 
    CASE CheckColumn 
        WHEN 'GJAHR' THEN @v1_YYYY 
        WHEN 'LMNON' THEN @v2_MM 
    END + '''', 
    ' AND '
) 
FROM #table_A;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 08:06:27