寫過程時碰到這麼乙個問題,需要在庫里處理n條資料,不想在程式裡迴圈造成多次訪問資料庫
而sql sever又不支援陣列引數,嘗試了兩種方法,在此做筆記如下(省略了單條資料的處理,用#temp是為了顯示結果)
1.利用replace
create table #temp
(ss varchar(
200) not
null
)declare @str varchar(
200)
declare @result varchar(
1000
)set@str='
aaa,bb,c,d,e,ffffff
'set@result ='
insert into #temp(ss) select
'''+
replace(@str,',
','''union select
''')
+''''
exec(@result)
select
*from #temp
2.利用charindex和substring
create table #temp
(ss varchar(
200) not
null
)declare @str varchar(
200)
declare @curr
intdeclare @prev
intset@str='
aaa,bb,c,d,e,ffffff
'set@curr=1
set@prev=1
while
@prev
<
len(@str)
begin
set@curr
=charindex(',
',@str,@prev)
if@curr
>
@prev
insert #temp select substring(@str,@prev,@curr
-@prev)
else
begin
insert #temp select substring(@str,@prev,len(@str)
-@prev+1
)break
endset@prev
=@curr+1
endselect
*from #temp
SQL Server儲存過程 對陣列引數的迴圈處理
sql server儲存過程 對陣列引數的迴圈處理 方法一 分割 例 通過sql server儲存過程傳送陣列引數刪除多條記錄 eg.id 值為 1,2,3 以下儲存過程就是刪除表中id號為1,2,3的記錄 create procedure deletenews id nvarchar 500 as...
sql server 全域性引數
1 identity 返回最後插入的標識值。這個變數很有用,當你插入一行資料時,想同時獲得該行的的id 標示列 就可以用 identity 示例 下面的示例向帶有標識列的表中插入一行,並用 identity 顯示在新行中使用的標識值。insert into jobs job desc,min lvl...
C 引數陣列與陣列引數
1 陣列作為引數來傳遞時,當呼叫這個函式時裡面的引數需要new乙個陣列 2 引數陣列就是在函式的陣列引數前面加上params,當呼叫函式傳遞陣列時不需要再new乙個,只需要傳遞任意個跟陣列引數型別相同的數就可以 using system namespace 1 引數陣列 return sum sta...