[20 分] 请问SQL里能用数组否?
用户可能要把 N 个值赋给一个用户 A,简单的SQL如下:
INSERT INTO Table1([user],[value]) VALUES(A,N1)
这样就可以把 N1 赋给 A 了,不过如果 N =100,就要循环 100 次上面的句子。
请问在存储过程里可以简单点执行吗?
@ValueN int, //这里可否是一个数组?
@UserID int
AS
//假如上面可以是数组,SQL 如何循环执行?
------解决方案--------------------// 简单数据可以先用分隔符连接,然后在分隔,
// 这里使用自定义函数,返回一个 Table
/*
* 字符串分割
* 示例:
* SELECT Value FROM dbo.uf_Util.SplitStr( '1,2,3,4,5 ', ', ')
*/
ALTER FUNCTION dbo.uf_Util_SplitStr(
@Src varchar(8000),
@Splitor varchar(10)
)
RETURNS @Result TABLE(VALUE varchar(100))
AS
BEGIN
DECLARE @i int
SET @Src = RTRIM(LTRIM(@Src))
SET @i = CHARINDEX(@Splitor,@Src)
WHILE @i> =1
BEGIN
-- 插入新值
INSERT @Result
VALUES(LEFT(@Src, @i-1))
SET @Src = SUBSTRING(@Src, @i + 1, LEN(@Src) - @i)
SET @i = CHARINDEX(@Splitor, @Src)
end
IF @Src <> ' '
INSERT @Result
VALUES(@Src)
RETURN
END