MySQL使用正则表达式从文本中提取数据
- 论坛
- MySQL使用正则表达式从文本中提取数据
30 浏览
MySQL使用正则表达式从文本中提取数据
我有一个包含大约500k行的表;varchar(255) UTF8列filename
中包含一个文件名;
我想要从文件名中去除各种奇怪的字符-我想使用字符类:[^a-zA-Z0-9()_ .\-]
现在,在MySQL中是否有一个函数可以通过正则表达式进行替换?我正在寻找类似于REPLACE()函数的功能-下面是一个简化的示例:
SELECT REPLACE('stackowerflow', 'ower', 'over'); Output: "stackoverflow" /* 是否存在类似的功能? */ 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=...
",但这看起来像是最后的慢速且丑陋的方法)