开发中经常都会遇到批量添加一组数据,最好是通过一个存储过程搞定,这样才快,再加上里面的事务,数据才更稳定,但是SQL好像不支持数组,没有办法,每次遇到这些情况都要自已写方法来弄
的作法一般是把哪组数据写成"123,151,11,58,13,295"这种类似的数据,以英文逗号分隔,然后再到存储过程里面分隔出来,再循环添加。
今天又要用到这个东西,懒了一下,问朋友要了一个,嘿嘿
程序代码 程序代码

Create FUNCTION dbo.Split
(
  @StringArray varchar(8000),
  @Delimiter varchar(50)
)
RETURNS  @StringArrayTable  table(Serial int identity(1,1), val varchar(100))
AS
BEGIN
     DECLARE @Pos  int
     IF(RIGHT(@StringArray,1) <> @Delimiter)
     SET @StringArray = @StringArray + @Delimiter
     WHILE  CHARINDEX(@Delimiter,@StringArray) <> 0
     BEGIN
          Select @Pos = CHARINDEX(@Delimiter,@StringArray)
          Insert @StringArrayTable(val) VALUES(LEFT(@StringArray,@Pos-1))
          SET @StringArray = STUFF(@StringArray,1,@Pos,'')
     END
     RETURN
END 


用法:
程序代码 程序代码

select * from Split(123,151,11,58,13,295',',')