sql >> Database >  >> RDS >> Mysql

MySQL REPLACE() – Vervang alle instanties van een substring door een andere string

De MySQL REPLACE() functie stelt u in staat om alle exemplaren van een subtekenreeks te vervangen door een andere tekenreeks. Het stelt je in staat om dingen te doen zoals alle voorkomens van een woord vervangen door een ander woord, enz.

Dit artikel demonstreert het gebruik ervan.

Syntaxis

Zo werkt de syntaxis:

REPLACE(str,from_str,to_str)

Waar str is de string die de substring/s bevat. from_str is de subtekenreeks die u wilt vervangen door een andere tekenreeks. En to_str is de nieuwe string die de oude string zal vervangen.

Voorbeeld

Hier is een eenvoudig voorbeeld:

SELECT REPLACE('Cats and dogs and cats and rabbits', 'and', 'or') AS Result;

Resultaat:

+---------------------------------+
| Result                          |
+---------------------------------+
| Cats or dogs or cats or rabbits |
+---------------------------------+

In dit geval verwisselen we gewoon het woord and met het woord or . Omdat dat woord drie keer voorkomt, zijn ze alle drie vervangen.

Hoofdlettergevoelig

Het is belangrijk om te onthouden dat de REPLACE() functie is hoofdlettergevoelig.

Voorbeeld:

SELECT REPLACE('Cats and dogs and cats and rabbits', 'cat', 'flea') AS Result;

Resultaat:

+-------------------------------------+
| Result                              |
+-------------------------------------+
| Cats and dogs and fleas and rabbits |
+-------------------------------------+

In dit geval slechts één exemplaar van cat werd vervangen, omdat slechts één exemplaar de juiste behuizing had. De eerste instantie had een hoofdletter C dus het kwam niet overeen.

Een subtekenreeks verwijderen

U kunt een subtekenreeks ook helemaal verwijderen, simpelweg door de subtekenreeks te vervangen door de lege tekenreeks ('' ):

SELECT REPLACE('http://www.database.guide', 'www.', '') AS Result;

Resultaat:

+-----------------------+
| Result                |
+-----------------------+
| http://database.guide |
+-----------------------+

Een waarborg

Een andere (misschien veiligere) manier om dit te doen, is door een deel van de omringende tekst op te nemen en vervolgens het overbodige deel te verwijderen:

SELECT REPLACE('http://www.database.guide', 'http://www.', 'http://') AS Result;

Resultaat:

+-----------------------+
| Result                |
+-----------------------+
| http://database.guide |
+-----------------------+

Dit beschermt tegen het per ongeluk verwijderen van een substring die niet mag worden verwijderd. Als we bijvoorbeeld een URL hebben zoals  http://bestwww.com , die per ongeluk zou veranderen in http://bestcom zonder de beveiliging.

Dezelfde beveiliging kan worden toegepast in gevallen waarin u tekst vervangt (niet alleen verwijdert). Bijvoorbeeld dit:

SELECT REPLACE('Land of cats and dogs and sand', ' and ', ' or ') AS Result;

Resultaat:

+------------------------------+
| Result                       |
+------------------------------+
| Land of cats or dogs or sand |
+------------------------------+

In dit geval heb ik een spatie toegevoegd voor en na de substring en de vervangende tekst.

Als ik dit niet had gedaan, zou ik dit hebben gedaan:

SELECT REPLACE('Land of cats and dogs and sand', 'and', 'or') AS Result;

Resultaat:

+----------------------------+
| Result                     |
+----------------------------+
| Lor of cats or dogs or sor |
+----------------------------+


  1. Een overzicht van PostgreSQL- en MySQL-kruisreplicatie

  2. Inzicht in SQL Server ALTER TABLE ADD COLUMN-instructie

  3. Geïndexeerde weergaven en statistieken

  4. De sortering van een database instellen in SQL Server (T-SQL)