我從分割查詢中有這個簡單的選擇。MS SQL:從分割字符串中選擇並保留原始順序
SELECT [id]
FROM [user] WHERE [id] IN (
SELECT items FROM dbo.Split('8004, 7943, 2658, 6223, 7826', ',')
)
的問題是,在用戶表中的select語句定購ID的上升,但我想保持原來的順序,該ID的出現在分割字符串函數。
這是我的分裂功能代碼:
ALTER FUNCTION [dbo].[Split](@String VARCHAR(8000), @Delimiter CHAR(1))
RETURNS @temptable TABLE (items VARCHAR(8000))
AS
BEGIN
DECLARE @idx INT
DECLARE @slice VARCHAR(8000)
SELECT @idx = 1
IF len(@String)<1 OR @String IS NULL RETURN
WHILE @idx!= 0
BEGIN
SET @idx = charindex(@Delimiter,@String)
IF @idx!=0
SET @slice = LEFT(@String,@idx - 1)
ELSE
SET @slice = @String
IF(LEN(@slice)>0)
INSERT INTO @temptable(Items) VALUES(@slice)
SET @String = RIGHT(@String,len(@String) - @idx)
IF LEN(@String) = 0 BREAK
END
RETURN
END
所以,我currenty得到的結果是:
2658
6223
7826
7943
8004
我需要的是:
8004
7943
2658
6223
7826
任何想法這是如何實現的?
謝謝!
郵政代碼爲dbo.Split功能請 – user3036342
沒關係,我看到問題:)給我一秒 – user3036342
添加分割功能代碼 – squareOne