MySQL - 替换以'/'

时间:2018-05-05 21:50:07

标签: mysql sql replace phpmyadmin

我对SQL的经验很少。我看似非常简单的任务 - 我复制了一行合同号码,其中包括一个两位数的年份数字( EG 1 / 14,31 / 15,221 / 17 )到一个新的“年”排。

现在我需要替换正斜杠左边的数字并用'20'字符串来缩小它以获得相当全年( EG 2014,2015,2017 )。该行是VARCHAR。

我正在尝试这个:

UPDATE contracts SET year = REPLACE(year, '%/', '20')

或者这个:

UPDATE contracts SET year = REPLACE(year, '*/', '20')

哪个没有抛出错误,但没有更新任何内容(0行受影响......)。

我甚至尝试使用regexp,但这会引发错误,所以语法肯定是错误的:

UPDATE contracts SET year = REPLACE(year, '.+/\', '20')

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:2)

MySQL不支持replace()的正则表达式。根据您的示例数据,您可以执行以下操作:

UPDATE contracts
    SET year = CONCAT('20', SUBSTRING_INDEX(year, '/', -1))