下面的Split功能運行良好。但它改變了我的輸入順序。 請幫助我獲得所需的輸出。SplitString SQL服務器
關於http://www.codeproject.com/Tips/85943/Split-function。
輸入
SELECT * from dbo.fnStringSplitter('1,3,2', ',')
期望輸出
1
3
2
不
1
2
3
下面的Split功能運行良好。但它改變了我的輸入順序。 請幫助我獲得所需的輸出。SplitString SQL服務器
關於http://www.codeproject.com/Tips/85943/Split-function。
輸入
SELECT * from dbo.fnStringSplitter('1,3,2', ',')
期望輸出
1
3
2
不
1
2
3
您需要通過使用才能獲得結果所需的順序嘗試改變這樣的分割字符串函數
嘗試這種方式
CREATE FUNCTION dbo.Fnstringsplitter (@string NVARCHAR(MAX),
@delimiter VARCHAR(2))
RETURNS @result TABLE(
id INT IDENTITY(1, 1),
split_val NVARCHAR(MAX))
BEGIN
DECLARE @start INT,
@end INT
SELECT @start = 1,
@end = Charindex(@delimiter, @string)
WHILE @start < Len(@string) + 1
BEGIN
IF @end = 0
SET @end = Len(@string) + 1
INSERT INTO @result
(split_val)
VALUES (Substring(@string, @start, @end - @start))
SET @start = @end + 1
SET @end = Charindex(@delimiter, @string, @start)
END
RETURN
END
查詢:
SELECT split_val
FROM dbo.Fnstringsplitter('1,3,2', ',')
ORDER BY id
注:這不是分割數據的有效方式。但在你的情況下可靠
SQL中的數據集本質上是無序的。當你需要一個明確的命令時,你必須明確地請求/創建它。這可以使用ORDER BY子句或通過前端代碼完成。
爲什麼你的預期產量是1,3,2? – Lamak
你通過1,2,3,你想要1,3,2。我想你是改變順序不拆分字符串功能 –
由問題編輯。請工作和回扣。這是合理的問題 – jamir