请教关于这个SQL语句的问题

bigmingming 2015-08-05 08:59:44
连接中 http://bbs.csdn.net/topics/391112939

with table1 as
(
SELECT 1 id,'00000002,00000003,00000004' code
)
, table2 as
(
SELECT '00000002' AS CODE ,'AAA'AS NAME UNION ALL
SELECT '00000003' AS CODE ,'BBB'AS NAME UNION ALL
SELECT '00000004' AS CODE ,'CCC'AS NAME UNION ALL
SELECT '00000005' AS CODE ,'DDD'AS NAME UNION ALL
SELECT '00000006' AS CODE ,'EEE'AS NAME
)
SELECT id, MAX(code) code, STUFF((SELECT ','+name FROM (select b.id, b.code, a.NAME from table2 a inner join table1 b on ','+b.CODE+',' like '%,'+a.code+',%') t WHERE id=t1.id FOR XML PATH('')), 1, 1, '') name
FROM (select b.id, b.code, a.NAME from table2 a inner join table1 b on ','+b.CODE+',' like '%,'+a.code+',%') t1
GROUP BY id


请问1.为什么用','+b.CODE+',' like '%,'+a.code+',%',其中的','+XX+','起什么作用,为什么两边加了逗号能分解出所有的CODE
2.FOR XML PATH使用有好的资料吗
...全文
114 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
mastersky 2015-08-05
  • 打赏
  • 举报
回复
1.用','+b.CODE+',' like '%,'+a.code+',%',其中的','+XX+','起什么作用,为什么两边加了逗号能分解出所有的CODE? ','+b.CODE+',' 相当于,00000002, '%,'+a.code+',%' 相当于%,00000002,00000003,00000004,% like是模糊查询,所以,00000002, / ,00000003, / ,00000004, 都符合查询条件 ,00000005, /,00000006, 不符合查询条件 为什么两边加了逗号能分解出所有的CODE?不是分解,是组合出查询和join的条件。 2.FOR XML PATH看下面这篇文章 http://www.cnblogs.com/doubleliang/archive/2011/07/06/2098775.html select ','+name from xx FOR XML PATH('')相当于把name结合起来变成,AAA,BBB,CCC 然后再用STUFF函数去掉最前面的逗号,就变成了AAA,BBB,CCC
Cherise_huang 2015-08-05
  • 打赏
  • 举报
回复
Cherise_huang 2015-08-05
  • 打赏
  • 举报
回复
1、这是将字符串拼接起来, ','+b.CODE+',' 如果b.code的值为——>中国, 则 ','+b.CODE+',' 拼接后的结果是——>,中国, like是模糊查询 like '%,' 查询符合条件的逗号结尾数据 2、关于FOR XML PATH网上有很好的讲解的: http://www.cnblogs.com/yanghaibo/archive/2010/06/04/1751405.html http://www.cnblogs.com/doubleliang/archive/2011/07/06/2098775.html
bigmingming 2015-08-05
  • 打赏
  • 举报
回复
例如CODE 01,02 双边加逗号,01,02, 为什么LIKE能找到分解出2条 01和02
许晨旭 2015-08-05
  • 打赏
  • 举报
回复
这是拼接字符串,把XX的查询值放在SQL语句里

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧