gpt4 book ai didi

mysql - 如何在 MySQL 中进行正则表达式替换?

转载 作者:行者123 更新时间:2023-11-29 23:47:05 25 4
gpt4 key购买 nike

我有一个大约有 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"

我知道REGEXP/RLIKE ,但它们只检查是否有匹配,而不是匹配是什么

(我可以执行“SELECT pkey_id,filename FROM foo WHERE filename RLIKE '[^a-zA-Z0-9()_ .\-]' “从 PHP 脚本中,执行 preg_replace,然后执行“UPDATE foo ... WHERE pkey_id=...”,但这看起来像是最后的手段,缓慢且丑陋黑客)

最佳答案

MySQL 8.0+:

您可以使用 native REGEXP_REPLACE功能。

旧版本:

您可以使用用户定义的函数 (UDF),例如 mysql-udf-regexp .

关于mysql - 如何在 MySQL 中进行正则表达式替换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25857383/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com