MySQL REPLACE()
Funkce umožňuje nahradit všechny výskyty podřetězce jiným řetězcem. Umožňuje vám například nahradit všechny výskyty jednoho slova jiným slovem atd.
Tento článek ukazuje jeho použití.
Syntaxe
Zde je návod, jak probíhá syntaxe:
REPLACE(str,from_str,to_str)
Kde str
je řetězec, který obsahuje podřetězec/y. from_str
je podřetězec, který chcete nahradit jiným řetězcem. A to_str
je nový řetězec, který nahradí starý řetězec.
Příklad
Zde je základní příklad:
SELECT REPLACE('Cats and dogs and cats and rabbits', 'and', 'or') AS Result;
Výsledek:
+---------------------------------+ | Result | +---------------------------------+ | Cats or dogs or cats or rabbits | +---------------------------------+
V tomto případě jednoduše zaměníme slovo and
se slovem or
. Protože se toto slovo vyskytlo třikrát, všechny tři byly nahrazeny.
Rozlišování malých a velkých písmen
Je důležité si pamatovat, že REPLACE()
funkce rozlišuje velká a malá písmena.
Příklad:
SELECT REPLACE('Cats and dogs and cats and rabbits', 'cat', 'flea') AS Result;
Výsledek:
+-------------------------------------+ | Result | +-------------------------------------+ | Cats and dogs and fleas and rabbits | +-------------------------------------+
V tomto případě pouze jedna instance cat
byl nahrazen, protože pouze jedna instance měla správný případ. První instance měla velké C
takže se to neshodovalo.
Odstranění dílčího řetězce
Podřetězec můžete také odstranit úplně, jednoduše nahrazením podřetězce prázdným řetězcem (''
):
SELECT REPLACE('http://www.database.guide', 'www.', '') AS Result;
Výsledek:
+-----------------------+ | Result | +-----------------------+ | http://database.guide | +-----------------------+
Ochrana
Dalším (možná bezpečnějším) způsobem, jak toho dosáhnout, je zahrnout část okolního textu a poté odstranit nepotřebnou část:
SELECT REPLACE('http://www.database.guide', 'http://www.', 'http://') AS Result;
Výsledek:
+-----------------------+ | Result | +-----------------------+ | http://database.guide | +-----------------------+
To chrání před nechtěným odstraněním podřetězce, který by neměl být odstraněn. Například pokud máme adresu URL jako http://bestwww.com
, což by se nechtěně změnilo na http://bestcom
bez ochrany.
Stejné zabezpečení lze použít v případech, kdy nahrazujete text (nejen jej odstraňujete). Například toto:
SELECT REPLACE('Land of cats and dogs and sand', ' and ', ' or ') AS Result;
Výsledek:
+------------------------------+ | Result | +------------------------------+ | Land of cats or dogs or sand | +------------------------------+
V tomto případě jsem přidal mezeru před a za podřetězec a jeho nahrazující text.
Kdybych to neudělal, skončil bych s tímto:
SELECT REPLACE('Land of cats and dogs and sand', 'and', 'or') AS Result;
Výsledek:
+----------------------------+ | Result | +----------------------------+ | Lor of cats or dogs or sor | +----------------------------+