SQL Server更新某一列中多个字典码对应内容(sql示例)

示例-查询出多个字典码对应的内容

建立表格:学生-学习科目表student_study
注意:科目kemu列内容是字典码,需要更换成对应内容。
在这里插入图片描述
建立表格:编号-学科对应表格xueke
注意:这张表是字典码编号和科目xueke的对应关系表。
在这里插入图片描述

查询结果:在这里插入图片描述
SQL代码:

select a.kemu,stuff((
    select ','+b.xueke from  xueke  b
    where charindex(','+b.bianhao+',',','+a.kemu+',')>0 
    for xml path('')
    ),1,1,'') as kemus 
from student_study a

示例-替换多个字典码对应的内容

更新结果:

在这里插入图片描述
表里科目列字典项数据已经替换成对应内容:
在这里插入图片描述
SQL代码:

UPDATE   a  SET a.kemu=stuff((
    select ','+b.xueke from  xueke  b
    where charindex(','+b.bianhao+',',','+a.kemu+',')>0 
    for xml path('')
    ),1,1,'')    FROM  student_study a where   CHARINDEX(',',a.kemu)>0 

说明

CHARINDEX

通过CHARINDEX如果能够找到对应的字符串,则返回该字符串位置,否则返回0。
CHARINDEX ( expressionToFind , expressionToSearch [, start_location ] )
expressionToFind :目标字符串,就是想要找到的字符串,最大长度为8000 。
expressionToSearch :用于被查找的字符串。
start_location:开始查找的位置,为空时默认从第一位开始查找。

FOR XML PATH

FOR XML PATH ,其实它就是将查询结果集以XML形式展现,将多行的结果,展示在同一行。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值