[英]MySQL REPLACE multiple values
我在导致问题的列中有数据。 我需要删除多个坏字符。 我想在查询中执行此操作。
关于这个问题: MySQL 字符串替换
我知道我可以在哪里SELECT REPLACE(string_column, 'search', 'replace') as url
但这仅适用于例如将 / 替换为 //
我需要将 / 替换为 // 并且将 & 替换为 && 例如在单个查询中。 实现这一目标的最佳方法是什么?
如果要替换多个字符,则需要在一个查询中使用多个替换,如下所示。 但是如果要替换许多字符,那么最好使用应用程序层来处理它。 换句话说,少数替换它易于使用的查询,但对于许多字符替换,查询真的变得混乱,最终难以阅读或更改。
select
replace(
replace(string_column,'/','//'),'&','&&'
)
如果您使用的是MySQL 版本 8+ ,那么下面是内置的 function 可能会更好地帮助您。
细绳 | 代替 | Output |
---|---|---|
w"w'w. ex%a&m:pl–ec)o(m | "'%&:)(– | www.example.com |
SELECT REGEXP_REPLACE('w"w\'w. ex%a&m:p l–e.c)o(m', '[("\'%[:blank:]]&:–)]', '');
SELECT REGEXP_REPLACE(column, '[\("\'%[[:blank:]]&:–,#$@!;\\[\\]\)<>\?\*\^]+','')
MySQL 内置 function( MySQL 版本 8+ ): REGEXP_REPLACE (string, patterns, replace-with)
REGEXP_REPLACE 让您能够搜索多个字符并一次性替换它们。
要查找多个字符,模式是:
[
( -- open parenthesis
" -- double quotes
\' -- single quotes
% -- percentage
[:blank:] -- space
& -- ampersand
: -- colon
– -- non ASCII character
) -- close parenthesis
]
注意[:blank:] ,这是一个[:character_class:]并且 MySQL 确实支持许多名称。
字符 Class 名称 | 意义 |
---|---|
铝 | 字母数字字符 |
α | 字母字符 |
空白的 | 空白字符 |
控制 | 控制字符 |
数字 | 数字字符 |
图形 | 图形字符 |
降低 | 小写字母字符 |
打印 | 图形或空格字符 |
点点 | 标点符号 |
空间 | 空格、制表符、换行符和回车符 |
上 | 大写字母字符 |
数字 | 十六进制数字字符 |
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.