create procedure dbo.updatebrowserdata
@browsertype varchar(200), --定義須查詢的字串 (瀏覽器型別)
@counter varchar(200) --定義須查詢的字串 (瀏覽器計數)
as declare @type varchar(50) --擷取出來的瀏覽器型別
declare @count int --擷取出來的瀏覽器計數
declare @browpos int --定義分隔符','的位置 (針對瀏覽器型別擷取來用的)
declare @browlen int --定義擷取出來的子字串的長度 (針對瀏覽器型別擷取來用的)
declare @countpos int --定義分隔符','的位置 (針對瀏覽器計數來用的)
declare @countlen int --定義擷取出來的子字串的長度 (針對瀏覽器計數來用的)
set @browpos=charindex(',',@browsertype,0) --charindex(分隔符,被查詢的字串,查詢起始位置),這裡是取分隔符','出現的位置
set @countpos=charindex(',',@counter,0)
while(@browpos>0)
begin
set @type=substring(@browsertype,0,@browpos) --substring(被查詢的字串,起始位置,截止位置),根據分隔符的位置擷取字串
set @count= cast(substring(@counter,0,@countpos) as int)
set @browlen=len(@type) --len(子字串),取得子字串的長度
set @countlen=len(@count)
if((select count(browsertype) from tbbrowser where browsertype = @type)= 0) --判斷是否已經存在這種型別
begin
insert into tbbrowser ([browsertype],[count]) values (@type,@count)--不存在就寫入
end
else
begin
update tbbrowser set [count]= @count where [browsertype] = @type --存在就更新資料
end
select @type --輸出測試來用
select @count --輸出測試來用
set @browsertype=stuff(@browsertype,1,@browlen+1,'') --stuff(被查詢的字串,起始位置,截止位置),把子字串從被查詢的字串中去除
set @counter=stuff(@counter,1,@countlen+1,'')
set @countpos=charindex(',',@counter,0)
set @browpos=charindex(',',@browsertype,0) --控制迴圈的條件
end
go exec updatebrowserdata 'ie4,ie5,ie6,', '0,1,2,'
最後需要注意的是 這句exec updatebrowserdata 'ie4,ie5,ie6,', '0,1,2,' 傳遞的引數要一一對應,逗號分隔符是字串的最後一位。
c 學習之不定量引數篇
2 va arg va list arg,typename 目的 根據不定量引數的首位址和型別名,來進行不同的偏移取值 注意 這個函式每用一次,引數便讀一次。通過多次使用這個函式來達到讀取全部引數的功能 3 va end va list arg 目的 釋放這塊記憶體 include include ...
SQL分頁儲存過程比拚
1 sql server 儲存過程的分頁,這個問題已經討論過幾年了,很多朋友在問我,所以在此發表一下我的觀點 2 建立表 4 create table testtable 5 id int identity 1,1 not null 6 firstname nvarchar 100 collate ...
sql儲存過程in 多個引數
首先要建立乙個擷取字串的函式,新建乙個查詢,把下面 複製進去執行。函式sqlitin的第乙個引數是儲存過程要in的字串,第二個引數是分隔符 create function splitin c varchar 200 split varchar 2 returns t table col varcha...