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 № 1Użyj REPLACE
, LENGTH
, LOCATE
, REVERSE
& SUBSTRING
Funkcje.
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;