我有问题。我的表中有A~B~C~D
值。
我想将这个字符串分开,如“A”和“B~C”。
我可以使用此功能分隔“A”
SELECT SUBSTRING(Item.Description, 0, CHARINDEX('~', Item.Description)) As Com
但在那之后,我不能分开'B~C'。
当然如果我用SUBSTRING
和CHARINDEX
很多,我可以分开。
但这非常复杂。
所以我想知道我是否可以使用其他方式。
非常感谢阅读
我有问题。我的表中有A~B~C~D
值。
我想将这个字符串分开,如“A”和“B~C”。
我可以使用此功能分隔“A”
SELECT SUBSTRING(Item.Description, 0, CHARINDEX('~', Item.Description)) As Com
但在那之后,我不能分开'B~C'。
当然如果我用SUBSTRING
和CHARINDEX
很多,我可以分开。
但这非常复杂。
所以我想知道我是否可以使用其他方式。
非常感谢阅读
这是一个简短的 SQL 函数,您可以创建它来拆分字符串:
CREATE FUNCTION dbo.Split (@sep char(1), @s varchar(8000))
RETURNS table
AS
RETURN (
WITH splitter_cte AS (
SELECT CHARINDEX(@sep, @s) as pos, 0 as lastPos
UNION ALL
SELECT CHARINDEX(@sep, @s, pos + 1), pos
FROM splitter_cte
WHERE pos > 0
)
SELECT SUBSTRING(@s, lastPos + 1,
case when pos = 0 then 80000
else pos - lastPos -1 end) as chunk
FROM splitter_cte
)
GO
以下是您将如何使用它:
SELECT * FROM dbo.Split('~', 'A~B~C~D')
输出:
chunk
-------------
A
B
C
D
阅读有关此sql 拆分功能如何工作的更多信息