代码之家  ›  专栏  ›  技术社区  ›  Piskvor left the building Rohit Kumar

如何在MySQL中替换正则表达式?

  •  456
  • Piskvor left the building Rohit Kumar  · 技术社区  · 15 年前

    我有一张约500k行的桌子;varchar(255)UTF8列 filename 包含一个文件名;

    我试图从文件名中去掉各种奇怪的字符-我想我应该使用一个字符类: [^a-zA-Z0-9()_ .\-]

    现在 MySQL中是否有一个函数允许您通过正则表达式进行替换 ? 我正在寻找一个类似的函数来替换()函数-简化示例如下:

    SELECT REPLACE('stackowerflow', 'ower', 'over');
    
    Output: "stackoverflow"
    
    /* does something like this exist? */
    SELECT X_REG_REPLACE('Stackoverflow','/[A-Zf]/','-'); 
    
    Output: "-tackover-low"
    

    我知道 REGEXP/RLIKE ,但这些只是检查 如果 有火柴,不是吗 比赛很激烈。

    能够 做一个“ SELECT pkey_id,filename FROM foo WHERE filename RLIKE '[^a-zA-Z0-9()_ .\-]' “从PHP脚本中,执行以下操作: preg_replace 然后“ UPDATE foo ... WHERE pkey_id=... “,但这看起来像是最后的手段(缓慢而丑陋的黑客行为)

    11 回复  |  直到 7 年前
        1
  •  0
  •   janw arman aramesh    4 年前

    MySQL 8.0+ :

    REGEXP_REPLACE 作用

    旧版本:

    自由民主党 mysql-udf-regexp .