加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

for xml path 应用

发布时间:2020-12-15 23:06:14 所属栏目:百科 来源:网络整理
导读:读别人写的东西,无意中看到这样一句话 select @str=stuff((select ','+vc_product_name from #temptable for xml path('')),1,'') 在sqlserver的存储过程中执行了一下可以把临时表#temptable 中的vc_product_name取出来并用‘,’号隔开并赋值给字符串,用以

读别人写的东西,无意中看到这样一句话

select @str=stuff((select ','+vc_product_name from #temptable for xml path('')),1,'')

在sqlserver的存储过程中执行了一下可以把临时表#temptable 中的vc_product_name取出来并用‘,’号隔开并赋值给字符串,用以返回错误信息。很巧妙的用法,在网上搜索了一下解释是:“这一整句的作用是将多行vc_product_name字段的内容串联起来,用逗号分隔。”


先查stuff 函数,在指定的起点处删除指定长度的字符并插入另一组字符,显然是staff(****,'')的用法,应该是去掉括号中的第一个字符。


不过 fro xml path的用法之前真没见过,用sqlserver的联机帮助查了一下,原来是sqlserver 2005以上的版本可以将查询结果集以xml形式展现(PS,当看到xml的时候也是一头雾水,这是我的硬伤,对前台页面语言诸如此类一窍不通,不过简单百度了一下,了解到应该和html类似)。

自己写了三个语句,用于理解这个用法:

select vc_product_name from #temptable for xml path

select vc_product_name from #temptable for xml path('')

select ','+vc_product_name from #temptable for xml path('')


执行第一句,结果以<row><vc_product_name>分割#temptable 表中的vc_product_name列;

执行第二句,结果以<vc_product_name>分割#temptable 表中的vc_product_name列,显然语句最后的('')可以替换xml语句中的<row>;

执行第三句,结果以‘,’分割#temptable 表中的vc_product_name列,显然select后面的‘,’用以做分隔符,而path 后的('')的替换xml语句中的<row>。


这个用法因为之前没有见过,觉得很新鲜,而且在存储过程中赋给变量用以返回错误信息,用法很巧妙。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读