for xml path 应用
读别人写的东西,无意中看到这样一句话 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>。 这个用法因为之前没有见过,觉得很新鲜,而且在存储过程中赋给变量用以返回错误信息,用法很巧妙。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |