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