嗨,我是我的SQL新手,我想通过从date1列获取值来更新我的列b_id,b_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
我想在b_id中使用tostore列,但是如果使用此列,我将不保留b_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
答案 0 :(得分:0)
您可以使用mysql的CONCAT
和SUBSTRING_INDEX
函数来获取所需的列值,如下所示。
CONCAT
按照给定的顺序组合给定的字符串集。
SUBSTRING_INDEX
捕获文本的一部分。将-1
作为最后一个参数传递有助于通过从右侧捕获来捕获b_id
列的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';
希望这会有所帮助。