通过另一列的数据更新列的特定部分

ymdaylpp  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(288)

嗨,我是新来我的sql我正在尝试更新我的列b\u id通过从date1列获取值b\u id是longtext date1是datetime类型

SELECT date1,b_id, DATE_FORMAT(date1'%Y/%m/%d') AS tostore
FROM tbl1 WHERE 
b_id = 'ID/2018/5/13/000111' 
OR
b_id = 'ID/2018/5/13/000222'

当前数据

date1            b_id                        tostore
2018-12-20      ID/2018/5/13/000111         2018/12/20
2018-10-30      ID/2018/5/13/000222         2018/10/30

我想在bu id中使用tostore列,但是如果我使用这个,我不会保留bu id的任何数据,我希望id/和最后的g数字保持不变,我非常感谢任何建议谢谢

UPDATE tbl1
SET b_id = DATE_FORMAT(date1,'%Y/%m/%d') WHERE 
    b_id = 'ID/2018/5/13/000111' 
    OR
    b_id = 'ID/2018/5/13/000222';

 Desired Output

 date1            b_id                        tostore
2018-12-20      ID/2018/12/20/000111         2018/12/20
2018-10-30      ID/2018/10/30/000222         2018/10/30
9jyewag0

9jyewag01#

你可以用 CONCAT 以及 SUBSTRING_INDEX 函数来获取所需的列值,如下所示。 CONCAT 按给定顺序组合给定的字符串集。 SUBSTRING_INDEX 捕获文本的一部分。经过 -1 最后一个参数有助于捕获 b_id 从右侧捕获列。

UPDATE tbl1
SET b_id = CONCAT('ID/', DATE_FORMAT(date1,'%Y/%m/%d'), '/', SUBSTRING_INDEX(b_id, '/', -1))  
WHERE 
    b_id = 'ID/2018/5/13/000111' 
    OR
    b_id = 'ID/2018/5/13/000222';

希望这有帮助。

相关问题