在SQL Server中拆分字符串,可以使用以下几种方法:
SQL Server提供了一个名为STRING_SPLIT
的内置函数,可以将字符串按照指定的分隔符进行拆分。例如,将字符串按照逗号分隔:
SELECT value FROM STRING_SPLIT('a,b,c', ',');
如果STRING_SPLIT
函数不能满足需求,可以自定义一个字符串分割函数。例如,可以使用以下代码创建一个名为SplitString
的自定义函数:
CREATE FUNCTION SplitString
(
@Input NVARCHAR(MAX),
@Delimiter NVARCHAR(255)
)
RETURNS TABLE
AS
RETURN
(
SELECT
[Value] = SUBSTRING(
@Input,
[Number] = ROW_NUMBER() OVER (ORDER BY (SELECT NULL)),
CHARINDEX(@Delimiter, @Input + @Delimiter, [Number]) - [Number]
)
FROM (SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 UNION ALL SELECT 10) T1(N)
WHERE [Number] <= LEN(@Input)
AND SUBSTRING(@Delimiter + @Input, [Number], DATALENGTH(@Delimiter)) = @Delimiter
);
然后,可以使用以下代码将字符串按照指定的分隔符进行拆分:
SELECT [Value] FROM SplitString('a,b,c', ',');
如果字符串中的元素是以特定的标签包含的,可以使用XML解析来拆分字符串。例如,将字符串按照逗号分隔:
DECLARE @Input NVARCHAR(MAX) = 'a,b,c';
DECLARE @XML XML = CAST('<root><r>' + REPLACE(@Input, ',', '</r><r>') + '</r></root>' AS XML);
SELECT
T.c.value('.', 'NVARCHAR(MAX)') AS [Value]
FROM
@XML.nodes('/root/r') T(c);
总之,在SQL Server中拆分字符串有多种方法,可以根据具体需求选择合适的方法。
领取专属 10元无门槛券
手把手带您无忧上云