在我的存储过程中,我有这样的语句
select @cols = STUFF((SELECT distinct ',' + QUOTENAME(Vtype) from VType_tbl
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)') ,1,1,'')
我不知道这些声明究竟会发生什么?为什么我们使用Stuff
andQUOTENAME
和;
forXML PATH
在我的存储过程中,我有这样的语句
select @cols = STUFF((SELECT distinct ',' + QUOTENAME(Vtype) from VType_tbl
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)') ,1,1,'')
我不知道这些声明究竟会发生什么?为什么我们使用Stuff
andQUOTENAME
和;
forXML PATH
stuff 命令删除第一个字符并将其替换为 ''。
探索 stuff string 函数(http://craftydba.com/?p=5397)。
-- This snippet from my blog results in pay attention!
SELECT
STUFF('Pay no attention to the man behind the curtain!',
4, 3, '') as oz_quote;
STUFF 函数将一个字符串插入另一个字符串。它在起始位置删除第一个字符串中指定长度的字符,然后将第二个字符串插入到起始位置的第一个字符串中。
句法
STUFF ( character_expression , start , length , replaceWith_expression )
例子
SELECT STUFF('abcdef', 2, 3, 'ijklmn');
GO
结果
艾克姆奈夫