2015-08-28 282 views
2

我想刪除方括號之間的文本,但它似乎只是刪除括號。刪除方括號內的文字

aud_descThis is [a] test但上述我有它顯示This is a test,我不知道爲什麼它不是在括號內刪除文本爲好。

我錯過了什麼嗎?

+0

因爲你只是用空格替換括號 – Abhis

+0

replace會替換與你的模式匹配給定的新字符串的字符串部分,在你的情況下你已經要求它用''替換'',然後之後,用''替換']' – pancho018

回答

2

使用REPLACELENGTHLOCATEREVERSE & SUBSTRING功能。

SELECT REPLACE(aud_desc, SUBSTRING(aud_desc, LOCATE('[', aud_desc), LENGTH(aud_desc) - LOCATE(']', REVERSE(aud_desc)) - LOCATE('[', aud_desc) + 2), '') AS aud_desc 
FROM _audit 

輸入:

aud_desc

word [brakcet] word 
[brakcet] word 
word [brakcet] 

輸出:

aud_desc

word word 
word 
word 

SQL小提琴:http://sqlfiddle.com/#!9/178bb/1/0

0

試試這個

SELECT CONCAT(SUBSTRING_INDEX(aud_desc,'[',1),SUBSTRING_INDEX(aud_desc,']',-1)) 
FROM _audit; 
0

該查詢不應該在括號內文字去除的。它所做的一切 - 用空字符替換[]字符,從而刪除它們。

要刪除文本中括號,您可以使用locate函數獲取的[位置,然後再來一次locate得到的]位置,然後用substr功能根據[]符號位置獲得字符串的相應部分。