日期:2014-05-17  浏览次数:20543 次

新人不会SQL,看到一个SQL语句 请大家帮忙解答下啥意思
SELECT dah,  fid=STUFF((SELECT ','+CAST(fid AS VARCHAR(10)) FROM tb1    WHERE dah= t.dah FOR XML PATH('')),1,1,'')
FROM TB1 t
GROUP BY dah 

请问下 这个语句的意思  ,  for xml path 是啥意思 怎么理解, 还有 stuff 配合 cast 是啥意思

------解决方案--------------------
这个语句就是拼字符串的,cast就是转换数据类型的,stuff去看看联机文档..
------解决方案--------------------
SELECT dah,  fid=STUFF((SELECT ','+CAST(fid AS VARCHAR(10)) FROM tb1    WHERE dah= t.dah FOR XML PATH('')),1,1,'')
FROM TB1 t
GROUP BY dah 
for xml path是SQL Server 2005以后版本支持的一种生成XML的方式
stuff函数的作用是去掉字符串最前面的逗号分隔符.
cast是数据类型转化为varchar()类型,后配合stuff函数处理。
------解决方案--------------------
引用:
Quote: 引用:

这个语句就是拼字符串的,cast就是转换数据类型的,stuff去看看联机文档..

哦 这样啊 不太了解 CONVERT( VARCHAR(50),FID ) 和cast 有啥具体的区别,

还有那个for xml  语法不太理解。

case 和convert 没区别,只是写法不一样罢了。for xml 那个 我也只会这样用。。。等高人来解答吧..
------解决方案--------------------
CONVERT( VARCHAR(50),FID ) 和cast 有啥具体的区别?
转换的方式相同,convert多了日期的转换,其它一样
但convert转换样式更丰富也。
------解决方案--------------------
for xml path 是啥意思 
从xml文件读取数据,读取的结果和从表里select出来的结果一样。

stuff对字符操作函数,看联机
cast数据类型转换函数,看联机
------解决方案--------------------
学习了