如何将字符串拆分成多行但不使用输入表,只是一个字符串?
例如,字符串是'abc,grt,asd,eee,78s'
输出应该是这样的:
ABC
GRT
ASD
EEE
78S
我在这里看到许多解决方案,但都使用存储一个或多个输入字符串的表。
如何在不使用桌子的情况下实现这一目标?
由于
答案 0 :(得分:0)
创建以下功能。
CREATE FUNCTION SplitString
(
@Input NVARCHAR(MAX),
@Character CHAR(1)
)
RETURNS @Output TABLE (
Item NVARCHAR(1000)
)
AS
BEGIN
DECLARE @StartIndex INT, @EndIndex INT
SET @StartIndex = 1
IF SUBSTRING(@Input, LEN(@Input) - 1, LEN(@Input)) <> @Character
BEGIN
SET @Input = @Input + @Character
END
WHILE CHARINDEX(@Character, @Input) > 0
BEGIN
SET @EndIndex = CHARINDEX(@Character, @Input)
INSERT INTO @Output(Item)
SELECT SUBSTRING(@Input, @StartIndex, @EndIndex - 1)
SET @Input = SUBSTRING(@Input, @EndIndex + 1, LEN(@Input))
END
RETURN
END
GO
使用以下查询,您可以拆分字符串。
SELECT Item
FROM dbo.SplitString('abc,grt,asd,888,78s', ',')