12
如何在MySQL中执行正则表达式替换?
我有一张约有50万行的表格;varchar(255)UTF8列filename包含一个文件名; 我正在尝试从文件名中删除各种奇怪的字符-以为我会使用字符类: [^a-zA-Z0-9()_ .\-] 现在,MySQL中是否有一个函数可以让您通过正则表达式进行替换?我正在寻找与REPLACE()函数类似的功能-简化示例如下: 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=...”,但看起来像一个不得已的缓慢和丑陋的黑客)