很久没来这儿了 贴一个之前用到的SQL代码 今天在处理一个功能的时候遇到一些功能解决问题 如:表 [sql] CREATE TABLE demo( demo_id int identity primary key , demo_name varchar (50) ) INSERT INTO demo VALUES ( '房地产开发' ) INSERT INTO demo VALUE

很久没来这儿了 贴一个之前用到的SQL代码

今天在处理一个功能的时候遇到一些功能解决问题

如:表

[sql]

CREATETABLEdemo(

demo_id intidentityprimarykey,

demo_name varchar(50)

)

INSERTINTOdemoVALUES('房地产开发')

INSERTINTOdemoVALUES('房地产经纪/销售')

INSERTINTOdemoVALUES('建筑业/工程/施工')

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

[sql]

CREATETABLEdemo_test(

test_id intidentityprimarykey,

demo_ids varchar(500)

)

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

[html]

select demo_name from demo where charindex(CONVERT(VARCHAR,demo_id)+',','1,2,3'+',')>0

select demo_name from demo where charindex(CONVERT(VARCHAR,demo_id)+',','1,2,3'+',')>0 这样就获取到了

房地产开发

房地产经纪/销售

建筑业/工程/施工

下一步就是将查询得到的值合并 这儿用到:stuff,ltrim, for xml path('')

[sql]

SELECTstuff( (select','+ltrim(demo_name)fromdemo

wherecharindex(CONVERT(VARCHAR,demo_id)+',','1,2,3'+',')>0forxml path('') ),1,1,'')

SELECT stuff( (select ','+ltrim(demo_name) from demo where charindex(CONVERT(VARCHAR,demo_id)+',','1,2,3'+',')>0 for xml path('') ),1,1,'')如上 将两表联合查询就能得到想要的结果:

[sql]

SELECTt.test_id, demoName=(SELECTstuff( (select','+ltrim(demo_name)fromdemo

wherecharindex(CONVERT(VARCHAR,demo_id)+',',t.demo_ids+',')>0forxml path('') ),1,1,''))

fromdemo_test t

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 房地产开发,房地产经纪/销售,建筑业/工程/施工

2 房地产经纪/销售,建筑业/工程/施工 这样的查询就可以到达预期效果了

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 建筑业/工程/施工

CREATE TABLE demo_test(

test_id int identity primary key,

demo_ids varchar(500)

)

--------结果--------

1 1,2,3

2 2,3

--------最终查询语句与结果----------

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 房地产开发,房地产经纪/销售,建筑业/工程/施工

2 房地产经纪/销售,建筑业/工程/施工

f68f2add0b68e4f9810432fce46917b7.png

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐