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

SQL Server提取特定分隔符子串并拼接的实现求助

解决SQL Server中提取指定格式字符串的问题

方法一:适用于SQL Server 2017及以上版本(推荐)

利用STRING_SPLIT拆分字符串,结合STRING_AGG聚合结果,代码如下:

SELECT 
    STRING_AGG(SUBSTRING(s.split_value, 1, CHARINDEX(':', s.split_value) - 1), ',') AS processed_review
FROM YourTable
CROSS APPLY (
    SELECT value AS split_value 
    FROM STRING_SPLIT(YourTable.review, '|') 
    WHERE value <> ''
) s
GROUP BY YourTable.Id -- 替换为你的表的唯一标识列(如主键)

方法二:兼容SQL Server 2016及以下版本

如果你的SQL Server版本不支持STRING_AGG,可以使用STUFF+FOR XML PATH的拼接方式:

SELECT 
    STUFF((
        SELECT ',' + SUBSTRING(s.split_value, 1, CHARINDEX(':', s.split_value) - 1)
        FROM (
            SELECT value AS split_value 
            FROM STRING_SPLIT(t.review, '|') 
            WHERE value <> ''
        ) s
        FOR XML PATH(''), TYPE
    ).value('.', 'NVARCHAR(MAX)'), 1, 1, '') AS processed_review
FROM YourTable t

代码说明

  1. 拆分字符串:通过STRING_SPLIT(review, '|')将每行的review列按|拆分成多个片段,并用WHERE value <> ''过滤掉末尾|产生的空片段。
  2. 提取目标内容:使用SUBSTRING(s.split_value, 1, CHARINDEX(':', s.split_value) - 1)提取每个片段中第一个:之前的字符串。
  3. 聚合拼接:
    • 2017+版本用STRING_AGG直接将提取到的字符串用逗号连接。
    • 低版本通过FOR XML PATH生成拼接字符串,再用STUFF去掉开头多余的逗号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 10:40:49