sql >> Database >  >> RDS >> MariaDB

Hoe REPLACE() werkt in MariaDB

In MariaDB, REPLACE() is een ingebouwde tekenreeksfunctie waarmee u een deel van een tekenreeks kunt vervangen door een andere tekenreeks.

De functie accepteert drie argumenten:de tekenreeks, de subtekenreeks die moet worden vervangen en de tekenreeks waarmee de subtekenreeks moet worden vervangen.

Syntaxis

De syntaxis gaat als volgt:

REPLACE(str,from_str,to_str)

Waar str is de string, en from_str is de substring die moet worden vervangen, en to_str is de tekenreeks waarmee die subtekenreeks moet worden vervangen.

Voorbeeld

Hier is een eenvoudig voorbeeld:

SELECT REPLACE('Black dog', 'dog', 'cat');

Resultaat:

+------------------------------------+
| REPLACE('Black dog', 'dog', 'cat') |
+------------------------------------+
| Black cat                          |
+------------------------------------+

In dit geval hebben we de substring dog vervangen met cat .

Meerdere wedstrijden

Als de te vervangen tekenreeks meerdere keren voorkomt binnen de tekenreeks, worden alle exemplaren vervangen:

SELECT REPLACE('Black dogs and white dogs', 'dog', 'cat');

Resultaat:

+----------------------------------------------------+
| REPLACE('Black dogs and white dogs', 'dog', 'cat') |
+----------------------------------------------------+
| Black cats and white cats                          |
+----------------------------------------------------+

Geen overeenkomst

Als de substring niet voorkomt in de string, REPLACE() geeft de string ongewijzigd terug:

SELECT REPLACE('Black dog', 'horse', 'cat');

Resultaat:

+--------------------------------------+
| REPLACE('Black dog', 'horse', 'cat') |
+--------------------------------------+
| Black dog                            |
+--------------------------------------+

Hoofdlettergevoeligheid

De REPLACE() functie voert een hoofdlettergevoelige overeenkomst uit:

SELECT REPLACE('Black dog', 'Dog', 'Cat');

Resultaat:

+------------------------------------+
| REPLACE('Black dog', 'Dog', 'Cat') |
+------------------------------------+
| Black dog                          |
+------------------------------------+

In dit voorbeeld kwam de case niet overeen en is er dus niets vervangen.

Lege snaren

Dit is wat er gebeurt als een lege string wordt doorgegeven voor elk gegeven argument:

SELECT 
    REPLACE('', 'dog', 'cat') AS "1",
    REPLACE('Black dog', '', 'cat') AS "2",
    REPLACE('Black dog', 'dog', '') AS "3";

Resultaat:

+------+-----------+--------+
| 1    | 2         | 3      |
+------+-----------+--------+
|      | Black dog | Black  |
+------+-----------+--------+

Dus in dit geval:

  • Het doorgeven van een lege tekenreeks voor de eerste tekenreeks retourneert een lege tekenreeks.
  • Het doorgeven van een lege string voor het tweede argument geeft de originele string terug.
  • Als je een lege tekenreeks doorgeeft voor het derde argument, wordt de tekenreeks die moet worden vervangen uit de tekenreeks verwijderd.

Spatieteken

Een lege tekenreeks is niet hetzelfde als het spatieteken.

Dit is wat er gebeurt als we de lege tekenreeks in een spatie veranderen:

SELECT 
    REPLACE(' ', 'dog', 'cat') AS "1",
    REPLACE('Black dog', ' ', 'cat') AS "2",
    REPLACE('Black dog', 'dog', ' ') AS "3";

Resultaat:

+------+-------------+---------+
| 1    | 2           | 3       |
+------+-------------+---------+
|      | Blackcatdog | Black   |
+------+-------------+---------+

Daarom, als de string niets anders is dan een spatie, dan kunnen we die vervangen door een andere string:

SELECT REPLACE(' ', ' ', 'cat');

Resultaat:

+--------------------------+
| REPLACE(' ', ' ', 'cat') |
+--------------------------+
| cat                      |
+--------------------------+

Nullargumenten

null opgeven resulteert in null :

SELECT 
    REPLACE(null, 'dog', 'cat') AS "1",
    REPLACE('Black dog', null, 'cat') AS "2",
    REPLACE('Black dog', 'dog', null) AS "3";

Resultaat:

+------+------+------+
| 1    | 2    | 3    |
+------+------+------+
| NULL | NULL | NULL |
+------+------+------+

Ontbrekend argument

REPLACE() . aanroepen met het verkeerde aantal argumenten, of zonder het doorgeven van argumenten resulteert in een fout:

SELECT REPLACE();

Resultaat:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1

  1. Interne SQL Server:Plan Caching Pt. II – Plannen opnieuw compileren

  2. Unitils en DBMaintainer - hoe kan ik ze laten werken met meerdere gebruikers/schema's?

  3. Een inconsistente PostgreSQL-slave opnieuw opbouwen

  4. Hoe te controleren of een berekende kolom "persistent" is in SQL Server