2015-08-28 280 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功能根据[]符号位置获得字符串的相应部分。