在與資料庫互動的過程中,我們經常需要把一串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...