我需要清理字符串数据中包含所有类型奇怪字符的列。奇怪的字符几乎就是这些 []!@#$%.&*`~^-_{}:;<>/\|()
我只需要允许 [0-9]、[az],但由于包含一些西班牙语单词,所以还需要允许重音字符。
我一直在查看https://dev.mysql.com/doc/refman/8.0/en/regexp.html尝试设计一个可能适合此的正则表达式,但我的正则表达式 foo 很弱。
是否有办法清理这些字符,而不必单独查找和替换特殊字符,同时仍保留重音字符?
MySQL 8 具有应该可以工作的REGEXP_REPLACE 函数。
如果您只需要保留字母数字字符,包括重音字符,那么这很简单
SELECT REGEXP_REPLACE(your_column, '[^[:alnum:]]+', ' ') ...
Run Code Online (Sandbox Code Playgroud)
用空格替换任何非字母数字。如果你只想删除列表中的字符,你可以使用类似的东西
SELECT REGEXP_REPLACE(your_column, '[\]\\[!@#$%.&*`~^_{}:;<>/\\|()-]+', ' ') ...
Run Code Online (Sandbox Code Playgroud)
请注意,在后一种情况下,您将需要转义“]”、“[”、“\”,可能还需要转义“-”(或将后者作为集合中的第一个或最后一个元素)。
归档时间: |
|
查看次数: |
16477 次 |
最近记录: |