要获得预期结果,您可以创建一个函数,该函数将使用提供的分隔符将字符串拆分为行。之后,您可以根据需要对返回的数据进行进一步调整或应用更改。
第一步:创建函数
CREATE FUNCTION [dbo].[splitstring] ( @stringToSplit VARCHAR(MAX) ,@Delimiter VARCHAR(10))
RETURNS @returnList TABLE ([Word] [nvarchar] (500))
AS
BEGIN
DECLARE @name NVARCHAR(255)
DECLARE @pos INT
DECLARE @RN INT = 1
WHILE CHARINDEX(@Delimiter, @stringToSplit) > 0
BEGIN
SELECT @pos = CHARINDEX(@Delimiter, @stringToSplit)
SELECT @name = SUBSTRING(@stringToSplit, 1, @pos-1)
INSERT INTO @returnList([Word],RN)
SELECT @name,@RN
SET @RN = @RN + 1
SELECT @stringToSplit = SUBSTRING(@stringToSplit, @pos+1, LEN(@stringToSplit)-@pos)
END
INSERT INTO @returnList([Word],RN)
SELECT @stringToSplit,@RN
RETURN
END
第 2 步:使用该函数获取所需数据
SELECT A.Word+'/'+B.Word FROM
(
SELECT Word,RN
FROM [dbo].[splitstring]('ABJ/ADD/BKK/KUL/ADD/ABJ','/')
) A
INNER JOIN
(
SELECT Word,RN
FROM [dbo].[splitstring]('ABJ/ADD/BKK/KUL/ADD/ABJ','/')
)B ON A.RN = B.RN-1
输出将是-
ABJ/ADD
ADD/BKK
BKK/KUL
KUL/ADD
ADD/ABJ