繁体   English   中英

MySQL REPLACE 多个值

[英]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

MySQL 查询:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM