簡體   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