sqlserver,单元格中有多个关联ID,如何关联ID查询显示其他字段!

本文介绍在 SQL Server 中如何将一张表中的 ID 转换为另一张表中的 Name 显示,通过创建临时表和使用 forxml path 函数实现数据转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前面写以一篇关于Oracle的,由于我是玩sqlsever比较多,所以是看看sqlserver中如何处理这样的问题!
开始准备,为了方便,搞了临时表

 

创建临时表

create table #GNM_TABLE
(
GNM_ID int,
GNM_Name varchar(50)
)

insert into #GNM_TABLE(GNM_ID,GNM_Name)values(273,'GS')
insert into #GNM_TABLE(GNM_ID`在这里插入代码片`,GNM_Name)values(1,'AB')
insert into #GNM_TABLE(GNM_ID,GNM_Name)values(247,'ASD')

create table #WGT_TABLE
(
WGT_ID int,
WGT_GNM_Name varchar(50)
)
insert into #WGT_TABLE(WGT_ID,WGT_GNM_Name)values(276,'1,247')
insert into #WGT_TABLE(WGT_ID,WGT_GNM_Name)values(275,'1,247')




select * from #GNM_TABLE

select * from   #WGT_TABLE

查出来的结果就是这样的
在这里插入图片描述
接下来就是把第二张表中你的值转成第一张表中的name去显示了!

select *,(select  RTRIM (GNM_Name+',')  
from #GNM_TABLE 
 where  CHARINDEX(CAST(GNM_ID as varchar(10)),WGT.WGT_GNM_Name)>0   for xml path(''))  from      #WGT_TABLE as WGT

在这里插入图片描述
就这么神奇的实现了,为什么就实现了,这里有些东西不常用,for xml path 等等之类的,其实就是对象的转换,第二个表被转换成了xml 对象然后去检索在第二个表中的数据,就是这样而已!

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值