我对 SQL 的经验很少。我陷入了看似非常简单的任务 - 我已将一行契约(Contract)号复制到一个文件中,其中包括两位数的年份号(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 行受到影响......)。
我什至尝试了正则表达式,但这会引发错误,所以显然语法一定是错误的:
UPDATE contracts SET year = REPLACE(year, '.+/\', '20')
如有任何帮助,我们将不胜感激。
最佳答案
MySQL 不支持使用 replace()
的正则表达式。根据您的示例数据,您可以执行以下操作:
UPDATE contracts
SET year = CONCAT('20', SUBSTRING_INDEX(year, '/', -1))
关于MySQL – 替换部分以 '/' 结尾的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50194318/