如:表
CREATE TABLE demo( demo_id int identity primary key, demo_name varchar(50) ) INSERT INTO demo VALUES('房地产开发') INSERT INTO demo VALUES('房地产经纪/销售') INSERT INTO demo VALUES('建筑业/工程/施工')1 房地产开发 2 房地产经纪/销售 3 建筑业/工程/施工 另一表demo_test
CREATE TABLE demo_test( test_id int identity primary key, demo_ids varchar(500) )1 1,2,3 2 2,3 的demo_ids 中存储了如:1,2,3 想通过SQL获取demo_ids 对应的demo_name的值 如上想直接用SQL获取demo_test中demo_ids对应的值=>房地产开发,房地产经纪/销售,建筑业/工程/施工 对于用C#代码的话 相信这个没有任何难度就能实现 以下提供sql解决方案: 首先解决获取多个项的问题 这儿使用:charindex
select demo_name from demo where charindex(CONVERT(VARCHAR,demo_id)+',','1,2,3'+',')>0这样就获取到了
下一步就是将查询得到的值合并 这儿用到:stuff,ltrim, for xml path('')
SELECT stuff( (select ','+ltrim(demo_name) from demo where charindex(CONVERT(VARCHAR,demo_id)+',','1,2,3'+',')>0 for xml path('') ),1,1,'')如上 将两表联合查询就能得到想要的结果:
SELECT t.test_id, demoName=(SELECT stuff( (select ','+ltrim(demo_name) from demo where charindex(CONVERT(VARCHAR,demo_id)+',',t.demo_ids+',')>0 for xml path('') ),1,1,'')) from demo_test t 1 房地产开发,房地产经纪/销售,建筑业/工程/施工 这样的查询就可以到达预期效果了 |
|