您好,登錄后才能下訂單哦!
create table curtest (djbh varchar(20) primary key,sales varchar(20)) go insert curtest select 'A1','01,02,03' union all --創建表并插入記錄 select 'A2','01,02' union all select 'A3','02,03' union all select 'A4','02,03,04' go declare cur_test cursor for select * from curtest --聲明游標 declare @djbh varchar(20) --定義變量單據編號 declare @sales varchar(20) --定義變量銷售 declare @star int,@len int,@dhwz int -- 定義變量開始,長度,逗號位置 open cur_test --打開游標 fetch next from cur_test into @djbh,@sales --獲取第一條記錄 while(@@FETCH_STATUS=0) --根據返回狀態確認執行結果。0代表成功 begin set @star=1 --對開始位置賦值1 set @dhwz=CHARINDEX(',',@sales,@star) --獲取第一個逗號位置 set @len=LEN(@sales) --獲取字段長度 while(@star<=@LEN) --循環條件,開始位置小于字段長度 begin select @djbh,substring(@sales,@star,@dhwz-@star) --獲取逗號前字符 set @star=@dhwz+1 --每次循環,將上次逗號位置+1作為下次開始位置 set @dhwz=CHARINDEX(',',@sales,@star) --以上次逗號位置+1作為本次開始位置,檢索下一個逗號位置 if(@dhwz=0) --判斷,當檢索不到逗號(即返回值為0,并且已到達最后一個逗號) begin select @djbh,SUBSTRING(@sales,@star,(@len-@star)+1) --最后一個逗號后字符,以上一次逗號位置+1開始,長度為字段總長度減開始位置+1 break --跳出循環 end end fetch next from cur_test into @djbh,@sales --讀取下一條記錄,并重新開始執行循環(拆分并檢索逗號分割字符) end close cur_test
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。