记录一下mysql8对带单位的单元格进行

文章描述了如何使用MySQL8的SQL语句来处理TC1字段的内容,将10L/5L这样的数据拆分为两个新的字段TC14和TC15。首先修正可能导致小数错误的行数据,然后限制小数位数为1位,并更新TC1字段的值。这些操作针对CREATEDTIME在2023-06-12之后的记录执行。
摘要由CSDN通过智能技术生成

需求 TC1 内容类似 10L/5L 这样 需要将其拆分 使TC14为TC1 "/"后的内容 TC15为TC1的"/" 左边减去右边 数据库为mysql8 修改语句如下:

首先修改所有的 因为结果为整数 会导致有小数的行数据错误

update T_TABLE_TEST a
set
    `TC14` = SUBSTRING_INDEX(a.TC1, '/', -1),
    `TC15` = concat(
            TRUNCATE(   (
                                cast(SUBSTRING_INDEX(SUBSTRING_INDEX(a.TC1, '/', 1), REGEXP_SUBSTR(SUBSTRING_INDEX(a.TC1, '/', 1), '[^0-9.]'), 1) as DECIMAL(10,2))

                                -
                                cast(SUBSTRING_INDEX(SUBSTRING_INDEX(a.TC1, '/', -1), REGEXP_SUBSTR(SUBSTRING_INDEX(a.TC1, '/', -1), '[^0-9.]'), 1) as DECIMAL(10,2))

                            ) , 0)



        , TRIM(REGEXP_SUBSTR(SUBSTRING_INDEX(a.TC1, '/', 1), '[^0-9]+$'))  )
where
        CREATEDTIME > '2023-06-12';

然后修改有小数的 约定列中所有小数最多1位 语句如下

update T_TABLE_TEST a
set
    `TC14` = SUBSTRING_INDEX(a.TC1, '/', -1),
    `TC15` = concat(
            (
                    cast(SUBSTRING_INDEX(SUBSTRING_INDEX(a.TC1, '/', 1), REGEXP_SUBSTR(SUBSTRING_INDEX(a.TC1, '/', 1), '[^0-9.]'), 1) as DECIMAL(10,1))

                    -
                    cast(SUBSTRING_INDEX(SUBSTRING_INDEX(a.TC1, '/', -1), REGEXP_SUBSTR(SUBSTRING_INDEX(a.TC1, '/', -1), '[^0-9.]'), 1) as DECIMAL(10,1))

                )



        , TRIM(REGEXP_SUBSTR(SUBSTRING_INDEX(a.TC1, '/', 1), '[^0-9.]+$'))  )
where
        CREATEDTIME > '2023-06-12'
and a.TC1 REGEXP '\\.[0-9]+'
    ;

修改tc1

 

update T_TABLE_TEST a
set
    `TC1` = SUBSTRING_INDEX(a.TC1, '/', 1)

where
        CREATEDTIME > '2023-06-12';

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值