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

SQL如何提取值非空的booth_前缀列名拼接为|分隔字符串

int类型查询失败原因

你参考的bit类型示例支持直接判断列值是否为真,是因为SQL Server中bit类型会被隐式转换为布尔值处理,int类型不支持该隐式转换,必须显式写明判断条件列名 <> 0 AND 列名 IS NOT NULL,调整判断逻辑后即可正常运行。


实现方案

方案1:显式列出所有booth_前缀列(兼容所有SQL Server版本,无权限要求)

逻辑稳定,不需要系统表查询权限,列数不多时推荐使用:

SELECT STRING_AGG(booth_col, '|') AS result
FROM (
    VALUES
        (CASE WHEN booth_100 <> 0 AND booth_100 IS NOT NULL THEN 'booth_100' END),
        (CASE WHEN booth_101 <> 0 AND booth_101 IS NOT NULL THEN 'booth_101' END),
        (CASE WHEN booth_102 <> 0 AND booth_102 IS NOT NULL THEN 'booth_102' END),
        (CASE WHEN booth_103 <> 0 AND booth_103 IS NOT NULL THEN 'booth_103' END),
        (CASE WHEN booth_105 <> 0 AND booth_105 IS NOT NULL THEN 'booth_105' END),
        (CASE WHEN booth_121 <> 0 AND booth_121 IS NOT NULL THEN 'booth_121' END),
        (CASE WHEN booth_200 <> 0 AND booth_200 IS NOT NULL THEN 'booth_200' END),
        (CASE WHEN booth_201 <> 0 AND booth_201 IS NOT NULL THEN 'booth_201' END)
        -- 其余booth_前缀列按相同格式补充即可
) AS t(booth_col)
WHERE booth_col IS NOT NULL;

方案2:动态SQL自动获取列(无需手动列全,适合列数极多的场景)

需要查询系统表的权限,SQL Server 2017及以上版本可用:

DECLARE @sql NVARCHAR(MAX);
-- 自动拼接所有booth_前缀列的判断逻辑
SELECT @sql = STRING_AGG(
    'CASE WHEN ' + QUOTENAME(name) + ' <> 0 AND ' + QUOTENAME(name) + ' IS NOT NULL THEN ''' + name + ''' END',
    '),('
)
FROM sys.columns 
WHERE object_id = OBJECT_ID('你的实际表名') -- 替换为你要查询的表名
AND name LIKE 'booth\_%' ESCAPE '\';

-- 拼接完整查询语句
SET @sql = N'
SELECT STRING_AGG(booth_col, ''|'') AS result
FROM (VALUES (' + @sql + ')) AS t(booth_col)
WHERE booth_col IS NOT NULL;
';

EXEC sp_executesql @sql;

低版本SQL Server适配

如果使用SQL Server 2016及更早版本,没有内置STRING_AGG函数,可以把拼接逻辑替换为FOR XML PATH写法:

SELECT STUFF(
    (SELECT '|' + booth_col
     FROM (
        -- 此处填入方案1的VALUES判断逻辑即可
     ) AS t(booth_col)
     WHERE booth_col IS NOT NULL
     FOR XML PATH(''), TYPE
    ).value('.', 'NVARCHAR(MAX)'), 1, 1, ''
) AS result;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 07:54:02