日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

sql截取字符串并把字符串插入到表中的存储过程

發布時間:2024/4/17 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sql截取字符串并把字符串插入到表中的存储过程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題描述:
??? 我需要向一個存儲過程傳遞數組類型的參數,可是Transact-SQL里面沒有數組類型,請問應該怎樣實現數組的功能?

問題分析:
??? SQL Server并沒有數組類型,ANSI SQL-92標準中并沒有任何有關數組方面的定義。要實現其他高級語言中的數組的功能,我們必須使用一些特殊的處理方法,其中包括特殊設計的字符參數、臨時表、XML等。
??? 示例代碼如下:
CREATE PROCEDURE sum_of_array @list varchar(1000)
AS
DECLARE @ix int, @pos int, @str varchar(1000), @sum int
SET @pos = 1
SET @ix = 1
SET @sum = 0
WHILE @ix > 0
BEGIN
SET @ix = charindex(',', @list, @pos)
IF @ix > 0
SET @str = substring(@list, @pos, @ix - @pos)
ELSE
SET @str = substring(@list, @pos, len(@list))
SET @str = ltrim(rtrim(@str))
SET @sum = @sum + cast(@str AS int)
SET @pos = @ix + 1
END
SELECT @sum
GO
??? 該示例代碼可以求出一個整型數據數組的和,調用方式為:
EXEC sum_of_array @list = '1,2,3,4,5'
??? 結果為:16。


下面為修改的存儲過程

View Code create PROCEDURE [dbo].[Proc_Split_SizeClass]
@list varchar(
1000),--尺碼
@SizeID
int --尺碼臨時表ID
AS
DECLARE @ix
int, @pos int, @str varchar(1000), @sum int,@i int
declare @Size varchar(
2000)
declare @SizeClass varchar(
20)
set @Size=''
set @i=1
SET @pos
= 1
SET @ix
= 1
WHILE @ix
> 0
BEGIN
SET @ix
= charindex(',', @list, @pos) -- charindex里面分別指(尋找的字符,搜索指定序列的列,搜索時的起始字符位置)
IF @ix
> 0
SET @str
= substring(@list, @pos, @ix - @pos)
ELSE
SET @str
= substring(@list, @pos, len(@list))
SET @str
= ltrim(rtrim(@str))--LTRIM 是刪除起始空格后返回字符表達式,RTRIM 是截斷所有尾隨空格后返回一個字符串
set @SizeClass='Size'+cast(@i as varchar(10))--給Size編號成Size1,Size2,Size3等
set @Size=@Size+@SizeClass+'='+''''+@str+''''+','--給編號完Size賦值
print @Size
--打印出@Size
SET @pos
= @ix + 1
set @i=@i+1
END
set @Size=left(@Size,len(@Size)-1)--去掉字符串最后的一個字符
print @Size
--打印出最終的字符串

執行:exec Proc_Split_SizeClass
'160,165,170,175,180,185,190','2'
結果為:
Size1
='160',
Size1
='160',Size2='165',
Size1
='160',Size2='165',Size3='170',
Size1
='160',Size2='165',Size3='170',Size4='175',
Size1
='160',Size2='165',Size3='170',Size4='175',Size5='180',
Size1
='160',Size2='165',Size3='170',Size4='175',Size5='180',Size6='185',
Size1
='160',Size2='165',Size3='170',Size4='175',Size5='180',Size6='185',Size7='190',
Size1
='160',Size2='165',Size3='170',Size4='175',Size5='180',Size6='185',Size7='190'

另外,在存儲過程最后加上代碼:
declare @sql varchar (
2000)
set @sql=''
set @sql='update Pre_BaseProductSize set '+@Size+' where SizeID='+cast(@SizeID as varchar(10))
exec(@sql)

則能夠將得到的結果插入到相應的表中

轉載于:https://www.cnblogs.com/jys509/archive/2011/08/10/2133254.html

總結

以上是生活随笔為你收集整理的sql截取字符串并把字符串插入到表中的存储过程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。