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

如何拆分点分隔的多ID字符串并按行号筛选?

拆分多分隔符ID字符串并按行号筛选的解决方案

你提到的PARSENAME()函数确实有局限性——它最多只能处理包含3个英文句号(即4个分段)的字符串,所以没法拆分更长的ID序列。另外你的原始字符串里还混了一个空格,得先把空格替换成句号,统一分隔符。

下面提供两种可行的方法:

方法一:使用STRING_SPLIT() + ROW_NUMBER()(SQL Server 2016及以上版本适用)

这是最简洁的方案,直接拆分字符串并给每条记录加行号,方便按行筛选:

DECLARE @IdString NVARCHAR(MAX) = '4400028285.4400043238.4400051619.4400052460.4400074441.4400124290.4400131680.4400137443 4400140030.4400141964.4400143906.4400143906.4400144145.4400149146';

-- 先把字符串里的空格替换成句号,统一分隔符
SET @IdString = REPLACE(@IdString, ' ', '.');

-- 拆分字符串、添加行号,按需筛选指定行
SELECT 
    ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS RowNum,
    value AS Id
FROM STRING_SPLIT(@IdString, '.')
WHERE value <> '' -- 排除连续分隔符产生的空值
-- 要筛选第6行的话,加上这句:AND RowNum = 6

方法二:递归CTE(适用于SQL Server 2016之前的旧版本)

如果你的SQL Server版本不支持STRING_SPLIT(),可以用递归CTE来拆分:

DECLARE @IdString NVARCHAR(MAX) = '4400028285.4400043238.4400051619.4400052460.4400074441.4400124290.4400131680.4400137443 4400140030.4400141964.4400143906.4400143906.4400144145.4400149146';
-- 替换空格+末尾加句号,方便递归处理
SET @IdString = REPLACE(@IdString, ' ', '.') + '.';

WITH SplitCTE AS (
    SELECT 
        CAST(LEFT(@IdString, CHARINDEX('.', @IdString) - 1) AS NVARCHAR(MAX)) AS Id,
        CAST(SUBSTRING(@IdString, CHARINDEX('.', @IdString) + 1, LEN(@IdString)) AS NVARCHAR(MAX)) AS RemainingString,
        1 AS RowNum
    WHERE @IdString <> ''
    UNION ALL
    SELECT 
        CAST(LEFT(RemainingString, CHARINDEX('.', RemainingString) - 1) AS NVARCHAR(MAX)) AS Id,
        CAST(SUBSTRING(RemainingString, CHARINDEX('.', RemainingString) + 1, LEN(RemainingString)) AS NVARCHAR(MAX)) AS RemainingString,
        RowNum + 1 AS RowNum
    FROM SplitCTE
    WHERE RemainingString <> ''
)
SELECT RowNum, Id
FROM SplitCTE
WHERE Id <> ''
-- 筛选第6行的话,加上这句:AND RowNum = 6
OPTION (MAXRECURSION 0); -- 处理超过100条ID的情况,解除递归次数限制

如果你的ID列表里有重复值(比如原字符串里的4400143906出现两次),可以根据需求添加DISTINCT关键字去重。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 19:27:34