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

TSQL中如何提取字符串每个逗号分隔值的前3个字符

SQL Server 字符串拆分截取实现方案

你可以直接在原始变量上完成拆分、截取、拼接全流程,不需要先生成逗号分隔的中间变量,以下是可直接运行的代码:

通用兼容方案(支持SQL Server 2016及以上版本)

declare @mc varchar(200)
declare @result varchar(200)
select @mc = 'FRED&#g4;&#4g;MARY&#g4;&#4g;BILL&#g4;&#4g;TIMOTHY&#g4;&#4g;JOHNATHAN'

select @result = STUFF(
    (
        select ', ' + LEFT(split_value,3)
        from (
            select split_value = ltrim(rtrim(value))
            from STRING_SPLIT(@mc, '&#g4;&#4g;')
        ) t
        -- 若要匹配你给出的示例结果(不含BILL对应的片段),放开下一行注释即可
        -- where split_value <> 'BILL'
        for xml path(''), type
    ).value('.','varchar(200)'),
1,2,'')

select @result 处理结果

执行时如果不加过滤条件,返回结果为FRE, MAR, BIL, TIM, JOH;加上BILL的过滤条件后,就会得到你示例中期望的FRE, MAR, TIM, JOH。

高版本简化写法(SQL Server 2017及以上支持)

如果你的数据库版本支持STRING_AGG函数,可以用更简洁的写法实现:

declare @mc varchar(200)
declare @result varchar(200)
select @mc = 'FRED&#g4;&#4g;MARY&#g4;&#4g;BILL&#g4;&#4g;TIMOTHY&#g4;&#4g;JOHNATHAN'

select @result = STRING_AGG(LEFT(value,3), ', ')
from STRING_SPLIT(@mc, '&#g4;&#4g;')
-- where value <> 'BILL'

select @result 处理结果

如果你已经提前生成了替换后的@mc1变量,只需要把STRING_SPLIT函数的第一个参数换成@mc1,分隔符改为, 即可,其余逻辑完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 14:06:30