2007年8月9日 星期四

在 SQL 2000 實作 split 的功能

在 SQL 2000 裡並未提供類似 split 的含式,但目前已經知道 SQL 2005 開始內建這個函式了。
如果在不支援 split 的環境下卻仍要實作這功能,可以參考下面作法。

他是將 split 的功能註冊在 SQL 2000 的「使用者自訂函數」裡頭。如果你不想這麼做的話,當
然也可以將他抽離出來,獨自加到你自己的 SQL 語法裡。



CREATE FUNCTION split
(
@List nvarchar(2000),
@SplitOn nvarchar(5)
)
RETURNS @RtnValue table
(

Id int identity(1,1),
Value nvarchar(100)
)
AS
BEGIN

While (Charindex(@SplitOn,@List)>0)
Begin

Insert Into @RtnValue (value)
Select
Value = ltrim(rtrim(Substring(@List,1,Charindex(@SplitOn,@List)-1)))

Set @List = Substring(@List,Charindex(@SplitOn,@List)+len(@SplitOn),len(@List))
End

Insert Into @RtnValue (Value)
Select Value = ltrim(rtrim(@List))

Return
END


select * from split('hello,dd,ssss,ssx',',')

沒有留言:

張貼留言