我对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')
任何帮助都将不胜感激。
答案 0 :(得分:2)
MySQL不支持replace()
的正则表达式。根据您的示例数据,您可以执行以下操作:
UPDATE contracts
SET year = CONCAT('20', SUBSTRING_INDEX(year, '/', -1))