我如何在mysql-10.4.24-MariaDB中使用REGEXP_REPLACE从字符串中删除所有出现的,和I?

c6ubokkw  于 2023-01-17  发布在  Mysql
关注(0)|答案(1)|浏览(109)

如何使用REGEXP_REPLACE从字符串中删除所有出现的、和I?尝试了以下方法,但不起作用

regexp_replace('123,|4abcd, aaa|,qqq|a', '|,', '', 'g')

抱歉,我是说|。

v64noz0r

v64noz0r1#

|*在字符类中失去了它们的特殊含义(方括号),这很方便:

mysql> select regexp_replace('123*,|4abcd, aaa|,qqq|a', '[|*,]', '') as s;
+------------------+
| s                |
+------------------+
| 1234abcd aaaqqqa |
+------------------+

注意正则表达式中方括号的使用,这意味着匹配括号中的任何一个字符。
另外,您使用的最后一个参数'g'不受支持,也不是必需的。我猜想您认为这意味着要多次应用替换,就像在vim中执行s/regexp/string/g一样。但在MySQL和MariaDB中,REGEXP_REPLACE()默认对字符串中的所有匹配项应用替换。
使用MariaDB 10.4进行演示:https://dbfiddle.uk/ZFNMTfJ6

相关问题