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

如何在Microsoft SQL中拆分反斜杠分隔的字符串为两列

在SQL Server中拆分带反斜杠的字符串为两列

方法一:使用CHARINDEX + LEFT/RIGHT(兼容所有SQL Server版本)

假设你的字段名为YourColumn,表名为YourTable,可以通过定位反斜杠的位置直接拆分:

SELECT
  -- 提取反斜杠前的部分作为Column A
  LEFT(YourColumn, CHARINDEX('\', YourColumn) - 1) AS ColumnA,
  -- 提取反斜杠后的部分作为Column B,若需要给(DP19)前添加空格,用REPLACE处理
  REPLACE(
    RIGHT(YourColumn, LEN(YourColumn) - CHARINDEX('\', YourColumn)),
    '(DP19)',
    ' (DP19)'
  ) AS ColumnB
FROM YourTable;

说明:

  • CHARINDEX('\', YourColumn)返回第一个反斜杠的位置,LEFT截取该位置之前的所有字符;
  • RIGHT截取反斜杠之后的剩余字符,通过REPLACE可给括号前补空格(如果原字符串没有的话);
  • 若字符串中只有一个反斜杠,这个方法高效直接。

方法二:使用STRING_SPLIT(SQL Server 2016及以上版本)

如果你的SQL Server版本支持STRING_SPLIT,可以先拆分再重组为两列:

WITH SplitData AS (
  SELECT
    YourColumn,
    value,
    ROW_NUMBER() OVER (PARTITION BY YourColumn ORDER BY (SELECT NULL)) AS RowNum
  FROM YourTable
  CROSS APPLY STRING_SPLIT(YourColumn, '\')
)
SELECT
  MAX(CASE WHEN RowNum = 1 THEN value END) AS ColumnA,
  REPLACE(MAX(CASE WHEN RowNum = 2 THEN value END), '(DP19)', ' (DP19)') AS ColumnB
FROM SplitData
GROUP BY YourColumn;

说明:

  • STRING_SPLIT按反斜杠将字符串拆分为多行,ROW_NUMBER()给每行标记序号;
  • 用CASE和MAX将两行数据转成两列,同样可通过REPLACE补空格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 12:55:15