/ / usuń tekst między nawiasami kwadratowymi - mysql, sql

usuń tekst między nawiasami kwadratowymi - mysql, sql

Próbuję usunąć tekst między nawiasami kwadratowymi, jednak wydaje się, że usunięto tylko nawiasy.

SELECT Replace(Replace(aud_desc, "[", ""), "]", "") from _audit

aud_desc jest This is [a] test jednak z powyższym mam to pokazać This is a test, Nie jestem pewien, dlaczego nie usuwa również tekstu w nawiasach.

Czy coś przeoczyłem?

Odpowiedzi:

2 dla odpowiedzi № 1

Użyj REPLACE, LENGTH, LOCATE, REVERSE & SUBSTRINGFunkcje.

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

Wkład:

aud_desc

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

Wydajność:

aud_desc

word word
word
word

Fiddle SQL: http://sqlfiddle.com/#!9/178bb/1/0


0 dla odpowiedzi nr 2

To zapytanie nie powinno w ogóle usuwać tekstu z nawiasów. Wszystko, co robi - zastępuje [ i ] postacie z pustym charakterem, usuwając je.

Aby usunąć tekst z nawiasów, możesz go użyć Znajdź funkcja, aby uzyskać pozycję [, to jeszcze raz locate aby uzyskać pozycję ] a następnie użyć substr funkcja do uzyskania odpowiednich części ciągu zgodnie z [] pozycje symboli.


0 dla odpowiedzi № 3

Spróbuj tego

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