【问题标题】:MySQL – replace part of strings ending with '/'MySQL – 替换以 '/' 结尾的部分字符串
【发布时间】:2018-10-16 02:03:50
【问题描述】:

我对 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 行受影响……)。

我什至尝试了正则表达式,但这会引发错误,所以显然语法一定是错误的:

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

任何帮助将不胜感激。

【问题讨论】:

    标签: mysql sql replace phpmyadmin


    【解决方案1】:

    MySQL 不支持带有replace() 的正则表达式。根据您的样本数据,您可以:

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

    【讨论】:

    • 是的,它有效!非常感谢。但我仍然想知道为什么 REPLACE(year, '%/', '20') 不起作用……
    • @Hynek。 . .因为您的字符串中没有百分号。正如我所解释的,replace() 不支持通配符。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-19
    • 2017-08-05
    • 2012-07-04
    • 2016-03-10
    • 2013-11-22
    • 2013-11-03
    相关资源
    最近更新 更多