各位大侠能帮我解释下这个字符串合并的函数吗?我对自定义函数的用法还不熟悉~~~麻烦大家了详细解释下了~感激不尽~~CREATE FUNCTION dbo.f_str(@id int)
RETURNS varchar(8000)
AS
BEGIN
DECLARE @r varchar(8000)
SET @r = ''
SELECT @r = @r + ',' + value FROM tb WHERE id=@id
RETURN STUFF(@r, 1, 1, '')
END
RETURNS varchar(8000)
AS
BEGIN
DECLARE @r varchar(8000)
SET @r = ''
SELECT @r = @r + ',' + value FROM tb WHERE id=@id
RETURN STUFF(@r, 1, 1, '')
END
楼主最好print一下@r,练习实际数据
CREATE FUNCTION dbo.f_str(@id int)
RETURNS varchar(8000)
AS
BEGIN
DECLARE @r varchar(8000)
--将变量@r赋值为''
SET @r = ''
--将所有value以 ',' + value的形式拼成字符串赋给@r
SELECT @r = @r + ',' + value FROM tb WHERE id=@id
--将字符串@r第一个字符','以''来代替
RETURN STUFF(@r, 1, 1, '')
END
--将变量@r赋值为''
SET @r = ''
--将所有value以 ',' + value的形式拼成字符串赋给@r
SELECT @r = @r + ',' + value FROM tb WHERE id=@id
--将字符串@r第一个字符','以''来代替
RETURN STUFF(@r, 1, 1, ''--这个语句连接后的字符串前面有个',',stuff的作用就是从第一个字符开始,总共一个字符,替换为空,也就是去掉第一个字符
--刪除指定的字元長度並於指定的開始點插入另一字元集。
--語法
--STUFF ( character_expression , start , length , character_expression )
--範例
--本範例傳回藉由從第一個字串 (abcdef) 位置 2開始 (於 b) 刪除三個字元,並於刪除點插入第二個字串所建立的字元字串。
SELECT STUFF('abcdef', 2, 3, 'ijklmn')
GO
--以下為結果集:
---------
aijklmnef (1 row(s) affected)