有没有一种方法来更新具有特殊部分的多个列?

时间:2019-06-25 04:27:08

标签: mysql sql

我有一张桌子,里面有一个出生日期,其中一个工作人员序列号与出生日期几乎相同,并且由于某些序列号数据与他们的出生日期不同,所以我想更新这些日期与序列号相同。

我使用这种代码

UPDATE worker 
SET birthdate = MID(NIP,1,8) 
where (MID(NIP,1,8)
<>concat(MID(TGLLHR,1,4),MID(TGLLHR,6,2),MID(TGLLHR,9,2)));
  • 第三行用于搜索与序列号不同的生日
  • 第二行是我想要更改的行,而不是像1996-08-01那样获得输出,而我就像19960801那样行。我想更改它,例如日期格式 例如,如果其中一个的序列号为19961101013,并且其出生日期为1995-11-03,我想将其出生日期更改为与序列号相同的日期,例如1996-11-01

1 个答案:

答案 0 :(得分:0)

您可以使用Couple或REPLACE / CONVERT方法检查生日和NIP之间的数据匹配,然后相应地更新数据。以下脚本将帮助您相应地更新数据。

  

注意:UPDATE是有风险的命令。请先尝试使用您的测试数据。

UPDATE worker 
SET birthdate = CONVERT(LEFT(CONVERT(NIP,CHAR),8) , DATE)
WHERE REPLACE(CONVERT(birthdate, CHAR),'-','') <> LEFT(CONVERT(NIP,CHAR),8)

如您所解释的,上面的脚本将仅更新在生日和NIP值之间不匹配的记录。