当前位置: 代码迷 >> Sql Server >> ,简单查询有关问题 要转换
  详细解决方案

,简单查询有关问题 要转换

热度:98   发布时间:2016-04-24 09:53:01.0
在线等,简单查询问题 要转换
表A
ID(int型)   Name
1           张三
2           李四
3           小王

表B
ID          List(varchar型)
1           1,2


根据表B的ID 1 需要查出结果:


ID          Name

1           张三
2           李四
------解决思路----------------------
SELECT
A.*
FROM
(SELECT ID, CONVERT(XML , '<v>' + REPLACE(List, ',', '</v><v>') + '</v>')Lists FROM B) T0
OUTER APPLY (SELECT N.v.value('.' , 'INT')List FROM T0.Lists.nodes('/v') N(v)) T1
INNER JOIN A ON T1.ID=A.ID

你参考一下,有什么问题贴上来
------解决思路----------------------
引用:
SELECT
A.*
FROM
(SELECT ID, CONVERT(XML , '<v>' + REPLACE(List, ',', '</v><v>') + '</v>')Lists FROM B) T0
OUTER APPLY (SELECT N.v.value('.' , 'INT')List FROM T0.Lists.nodes('/v') N(v)) T1
INNER JOIN A ON T1.ID=A.ID

你参考一下,有什么问题贴上来

修正如下
SELECT
    A.*
FROM
    (SELECT ID, CONVERT(XML , '<v>' + REPLACE(List, ',', '</v><v>') + '</v>')Lists FROM B) T0
    OUTER APPLY (SELECT N.v.value('.' , 'INT')List FROM T0.Lists.nodes('/v') N(v)) T1
    INNER JOIN A ON T1.List=A.ID

------解决思路----------------------

select  a.* from b  join a 
on b.id=1 and chaindex(b.list,a.id)>0
或者
select * from b  join a 
on b.id=1 and a.id like'%'+b.list+'%'

------解决思路----------------------
根据表B的ID 1
可以这么做
SELECT
    A.*
FROM
    (SELECT ID, CONVERT(XML , '<v>' + REPLACE(List, ',', '</v><v>') + '</v>')Lists FROM B WHERE ID=1) T0
    OUTER APPLY (SELECT N.v.value('.' , 'INT')List FROM T0.Lists.nodes('/v') N(v)) T1
    INNER JOIN A ON T1.ID=A.ID

注意上面 WHERE ID=1的位置
  相关解决方案