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

SQL Server中如何拆分Test列字符串并在B段数据前插入换行符

SQL Server 字符串拆分重组实现方案

核心思路是通过内置字符串定位函数提取B:开头的目标分段,调整分段顺序后拼接换行符,不需要依赖自定义拆分函数,兼容SQL Server 2008及以上版本。

实现步骤

  • 定位带前置空格的 B:字符串起始位置,避免误匹配内容文本中偶然出现的B:字符,切分出B段之前的内容
  • 从 B:的位置往后查找下一个分段标识(示例中为 C:)的位置,以此为边界切分出B段本身、B段之后的内容
  • 按「B段前内容 + B段后内容 + 换行符 + B段」的顺序拼接,得到目标格式

代码示例

SELECT 
    CONCAT(
        -- 提取B段之前的内容(A段)
        LEFT(Test, CHARINDEX(' B:', Test) - 1),
        ' ',
        -- 提取B段之后的内容(C段)
        SUBSTRING(
            Test,
            CHARINDEX(' C:', Test, CHARINDEX(' B:', Test)) + 1,
            LEN(Test)
        ),
        -- Windows风格换行符
        CHAR(13) + CHAR(10),
        -- 提取完整B段内容
        SUBSTRING(
            Test,
            CHARINDEX(' B:', Test) + 1,
            CHARINDEX(' C:', Test, CHARINDEX(' B:', Test)) - CHARINDEX(' B:', Test) - 1
        )
    ) AS test
FROM 你的业务表名

如果使用SQL Server 2008版本不支持CONCAT函数,直接将CONCAT()替换为+做字符串拼接即可,可按需加ISNULL判断避免空值导致整个拼接结果为NULL。

效果说明

针对示例数据A:Hi B:13/06/2022 C:Peter,上述代码返回结果完全匹配需求:

A:Hi C:Peter
B:13/06/2022

注意在SSMS客户端查看结果时,需要切换为文本显示模式(快捷键Ctrl+T)才能看到换行效果,默认网格视图不会解析展示换行符。
如果你的实际数据分段标识不固定、B段位置不固定,只需要调整CHARINDEX的匹配规则,核心拆分拼接逻辑不需要改动。

内容的提问来源于stack exchange,提问作者VB.netDeveloper

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 21:54:29