我有一个约500k行的桌子; varchar(255)UTF8列的filename包含一个文件名; 我试图从文件名中去除各种奇怪的字符 – 以为我会用字符类: [^a-zA-Z0-9()_ .\-] 现在, MySQL中有一个函数可以让你通过正则expression式来replace吗? 我正在寻找与REPLACE()函数类似的function – 简单的例子如下: SELECT REPLACE('stackowerflow', 'ower', 'over'); Output: "stackoverflow" /* does something like this exist? */ SELECT X_REG_REPLACE('Stackoverflow','/[A-Zf]/','-'); Output: "-tackover-low" 我知道REGEXP / RLIKE ,但那些只检查是否有匹配,不匹配什么 。 (我可以从一个PHP脚本做一个“ SELECT pkey_id,filename FROM foo WHERE filename RLIKE '[^a-zA-Z0-9()_ .\-]' ”,做一个preg_replace然后“ UPDATE foo … WHERE pkey_id=… “,但看起来像是最后一UPDATE foo … WHERE pkey_id=…缓慢和丑陋的黑客)