MySQL处理线上字典项数据的升级SQL——问题记录

需求:

项目上线后发现一些sao操作后导致了存字典项编码的字段有少部分数据存的字典项名字,现需要写个升级SQL将存字典项名字的数据更正为存字典项编码。(字典项很多)

开始思路:

最开始想的处理思路是,写个自定义函数(因为要传入变量,不能使用子查询所以就用自定义函数了)根据字典项值查询出对应的字段项编码,然后在where中带条件筛选出需要更正的值。写好后发现通用性不强,换个字典项筛选条件不好处理。

-- 获取民族编码
DELIMITER $$
DROP FUNCTION IF EXISTS getNationCode$$
CREATE FUNCTION getNationCode(nation_code varchar(50)) RETURNS varchar(50)
BEGIN
  DECLARE ret VARCHAR(50);
    -- 把查到的code值放在ret中
  SELECT `code` INTO ret FROM pl_dict_item WHERE dict_code = 'Nation' AND `name` = nation_code;
    -- 若没查到值就返回原来的值
	IF ret IS NULL THEN SET ret = nation_code;
	END IF;
  return ret;
END $$

-- SELECT 'aaa';
-- SELECT 语句原来后面直接跟一个值就可以,本质是输出内容的语句
-- SELECT getNationCode("族");

-- 更新字典项民族名字为编码
UPDATE b_user_de
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值