0
我得到了這個函數來拆分字符串,但它給了我想要的下面一列中的spited字符串。如何修改函數以獲得三列輸出?
我該如何修改函數來得到如下的輸出。
我在google上發現了這個功能。
CREATE 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
SELECT * from dbo.Split('hello hi guys',' ');
items
--------
hello
hi
guys
I want like this
col1 col2 col3
_____ _______ _______
hello hi guys
你不能有這樣的功能。你可以得到一個*變量的唯一途徑*列的結果集數是構造查詢文本並運行它(又名動態小號QL)。您不能在用戶定義函數中執行動態SQL。 –
@Damien_The_Unbeliever如果字符串包含2個單詞,則將字符串拆分爲3個不同的字符串的任何其他方式最後一個字符串對於1個字符應該是空白相同的,最後2個字段應該是空白的。 – user614978
如果字符串最多隻有2個空格(即3個字),那麼使函數返回一個帶有3列的表格......否則Damien是正確的,你不能讓用戶定義的函數返回一個帶有動態列的表格。 – freefaller