MySQL REPLACE()
funkcja umożliwia zastąpienie wszystkich wystąpień podciągu innym ciągiem. Pozwala na takie rzeczy, jak zastąpienie wszystkich wystąpień jednego słowa innym słowem itp.
Ten artykuł pokazuje jego użycie.
Składnia
Oto jak działa składnia:
REPLACE(str,from_str,to_str)
Gdzie str
jest ciągiem zawierającym podciąg/i. from_str
jest podciągiem, który chcesz zastąpić innym ciągiem. I to_str
to nowy ciąg, który zastąpi stary.
Przykład
Oto podstawowy przykład:
SELECT REPLACE('Cats and dogs and cats and rabbits', 'and', 'or') AS Result;
Wynik:
+---------------------------------+ | Result | +---------------------------------+ | Cats or dogs or cats or rabbits | +---------------------------------+
W tym przypadku po prostu zamieniamy słowo and
ze słowem or
. Ponieważ wystąpiły trzy wystąpienia tego słowa, wszystkie trzy zostały zastąpione.
Rozróżnianie wielkości liter
Należy pamiętać, że REPLACE()
funkcja rozróżnia wielkość liter.
Przykład:
SELECT REPLACE('Cats and dogs and cats and rabbits', 'cat', 'flea') AS Result;
Wynik:
+-------------------------------------+ | Result | +-------------------------------------+ | Cats and dogs and fleas and rabbits | +-------------------------------------+
W tym przypadku tylko jedno wystąpienie cat
został wymieniony, ponieważ tylko jedna instancja miała właściwy przypadek. Pierwsza instancja miała wielkie litery C
więc to się nie zgadzało.
Usuń podciąg
Możesz również całkowicie usunąć podciąg, po prostu zastępując podciąg pustym ciągiem (''
):
SELECT REPLACE('http://www.database.guide', 'www.', '') AS Result;
Wynik:
+-----------------------+ | Result | +-----------------------+ | http://database.guide | +-----------------------+
Ochrona
Innym (być może bezpieczniejszym) sposobem na zrobienie tego jest uwzględnienie części otaczającego tekstu, a następnie usunięcie niepotrzebnej części:
SELECT REPLACE('http://www.database.guide', 'http://www.', 'http://') AS Result;
Wynik:
+-----------------------+ | Result | +-----------------------+ | http://database.guide | +-----------------------+
Chroni to przed przypadkowym usunięciem podciągu, którego nie należy usuwać. Na przykład, jeśli mamy adres URL, taki jak http://bestwww.com
, który przypadkowo zmieni się w http://bestcom
bez zabezpieczenia.
To samo zabezpieczenie można zastosować w przypadkach, gdy zastępujesz tekst (a nie tylko go usuwasz). Na przykład to:
SELECT REPLACE('Land of cats and dogs and sand', ' and ', ' or ') AS Result;
Wynik:
+------------------------------+ | Result | +------------------------------+ | Land of cats or dogs or sand | +------------------------------+
W tym przypadku dodałem spację przed i po podłańcuchu oraz jego zastępczym tekście.
Gdybym tego nie zrobił, skończyłbym z tym:
SELECT REPLACE('Land of cats and dogs and sand', 'and', 'or') AS Result;
Wynik:
+----------------------------+ | Result | +----------------------------+ | Lor of cats or dogs or sor | +----------------------------+