我有一张约500k行的桌子; 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"
Run Code Online (Sandbox Code Playgroud)
我知道REGEXP/RLIKE,但那些只检查是否有匹配,没有什么比赛是.
(我可以SELECT pkey_id,filename FROM foo WHERE filename RLIKE '[^a-zA-Z0-9()_ .\-]'从PHP脚本做一个" ",做一个preg_replace然后" UPDATE foo ... WHERE pkey_id=...",但这看起来像一个最后的缓慢和丑陋的黑客)
我的数据库包含一个varchar类型的电话号码列表.电话号码可以是任何这些格式
12323232323
1-232-323 2323
232-323-2323
2323232323
Run Code Online (Sandbox Code Playgroud)
取而代之的是的–符号有可能是( ) , . 或者space
如果我搜索12323232323,1-232-323 2323,232-323-2323,或2323232323它应该显示所有这些结果.我需要为此编写一个查询.
我在列中导致数据导致问题.我需要删除多个不良字符.我想在查询中这样做.
在这个问题上:MySQL字符串替换
我知道我可以在哪里,SELECT REPLACE(string_column, 'search', 'replace') as url但这仅适用于例如替换/与//
我需要在单个查询中替换/和//以及&和&&.实现这一目标的最佳方法是什么?