sql把逗號分隔的字串拆成臨時表

2021-06-18 19:56:47 字數 1402 閱讀 4956

在與資料庫互動的過程中,我們經常需要把一串id組成的字串當作引數傳給儲存過程獲取資料。很多時候我們希望把這個字串轉成集合以方便用於in操作。 有兩種方式可以方便地把這個以某種符號分隔的id字串轉成臨時表

方式一:通過charindex和substring。

**

create function func_splitstring

(@str nvarchar(max),@split varchar(10))

returns @t table (c1 varchar(100))

asbegin

declare @i int

declare @s int

set @i=1

set @s=1

while(@i>0)

begin

set @i=charindex(@split,@str,@s)

if(@i>0)

begin

insert @t(c1) values(substring(@str,@s,@i-@s))

end

else begin

insert @t(c1) values(substring(@str,@s,len(@str)-@s+1))

endset @s = @i + 1

endreturn

end

select * from  dbo.func_splitstring('1,2,3,4,5,6', ',')

結果:

方式二:通過xquery(需要sql server 2005以上版本)。

**

create function func_splitid

(@str varchar(max),@split varchar(10))

returns @t table (c1 int)

asbegin

declare @x xml

set @x = convert(xml,'')

insert into @t select x.item.value('@id[1]', 'int') from @x.nodes('//items/item') as x(item)

return

end

執行:select * from  dbo.func_splitid('1,2,3,4,5,6', ',')

結果:

**:

SQL轉換列為以逗號分隔的字串

使用for xml path來將表中某一列的資料轉換為用逗號分隔的字串,例子如下 create table rowconcat rowno int primary key,rowcode varchar 30 insert into rowconcat values 1,one insert int...

sql欄位中逗號分隔字串的判斷

例如,資料表t1中有乙個欄位playtheme存放的數值類似如下 第一行 1,2,12 第二行 22,222,2222 第三行 1,2 第四行 2,12 第五行 2 如果你想取出playtheme欄位包含 2 的行,在構造sql 引數形式 時,要是寫成下面這種形式的話,則會將五行一起取出來,顯然達不...

陣列轉字串使用逗號分隔

listdocentrys string.join docentrys public static string join string separator,ienumerablevalues public static string join string separator,ienumerabl...