我有以下表值函数来分割字符串.这工作正常,从网络上的其他地方抄袭,我认为这不是问题的原因,但包含在相关的情况下:
CREATE FUNCTION dbo.StringSplit (@sep char(1), @s varchar(512))
RETURNS table
AS
RETURN (
WITH Pieces(pn, start, stop) AS (
SELECT 1, 1, CHARINDEX(@sep, @s)
UNION ALL
SELECT pn + 1, stop + 1, CHARINDEX(@sep, @s, stop + 1)
FROM Pieces
WHERE stop > 0
)
SELECT pn,
SUBSTRING(@s, start, CASE WHEN stop > 0 THEN stop-start ELSE 512 END) AS s
FROM Pieces
)
GO
Run Code Online (Sandbox Code Playgroud)
这将启用以下行:
SELECT * FROM dbo.StringSplit('.', 'this.is.a.string.to.split')
Run Code Online (Sandbox Code Playgroud)
生产
pn | s ----+-------- 1 | this 2 …