将表A中数值的代码替换成表B中对应代码的汉字

img

SQLSERVER 中将表A中数值的代码替换成表B中对应代码的汉字;
如有需要,可适当的添加对应主键。用SQL语句来执行

这个用游标最快,先提取出来再截取前几位的编号根据前几位编号进行修改,大概的思路就是这样的,或者用charindex的方法进行截取。

表A是一个字符串?
首先这个不能简单的使用replace,因为可能会出现 数字有部分相同的情况,比如 25 和225
所以看下这个字符串的特征,需要替换的数字,除了第一位,其他数字前面都有一个箭头,因此可以在字符串前面拼一个箭头,那样就可以使用replace替换箭头加数字了
然后,由于需要替换多次,所以要以B表记录为游标,循环对这个字符串执行替换,
最后输出完成替换的字符串就好了


由于题主要求使用sql,那么就得使用with as递归写法了

with cte as 
(select replace('915(2021-11-25)>1024(2021-11-17)>119(2020-01-01)',id,name) str ,1 lvl
from csdy_1224 where o=1 
union all 
select replace(cte.str,b.id,b.name),lvl+1 from cte ,csdy_1224 b where b.o=lvl
)
select * from cte where lvl=(select max(b.o)+1 from csdy_1224 b)

以下为实测截图

img

表A结构是什么样的,长度没有限制?你也没描述清楚啊