sql >> Database >  >> RDS >> MariaDB

2 manieren om een ​​substring in MariaDB te vervangen

Als je een substring moet vervangen door een andere string in MariaDB, zijn hier twee benaderingen die je kunt gebruiken.

De REPLACE() Functie

In MariaDB, de REPLACE() functie is speciaal ontworpen om een ​​subtekenreeks binnen een andere tekenreeks te vervangen.

U geeft drie argumenten op bij het aanroepen van de functie. Dit zijn de string, de substring en de vervangende string.

Voorbeeld:

SELECT REPLACE('My dog likes to dig holes', 'dog', 'cat');

Resultaat:

+----------------------------------------------------+
| REPLACE('My dog likes to dig holes', 'dog', 'cat') |
+----------------------------------------------------+
| My cat likes to dig holes                          |
+----------------------------------------------------+

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

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                          |
+----------------------------------------------------+

De REPLACE() functie voert een hoofdlettergevoelige overeenkomst uit.

Zie hoe REPLACE() Werkt in MariaDB voor meer voorbeelden.

De REGEXP_REPLACE() Functie

De REGEXP_REPLACE() functie is vergelijkbaar met de REPLACE() functie, behalve dat u hiermee patroonafstemming kunt doen met behulp van reguliere expressies.

Dit maakt REGEXP_REPLACE() krachtiger dan REPLACE() , omdat je kunt matchen met delen van een string om substrings te vervangen die moeilijker of onmogelijk te matchen zijn als je gewoon REPLACE() gebruikt .

Voorbeeld:

SELECT REGEXP_REPLACE('My cat has cuts', 'c.t', 'dog');

Resultaat:

+-------------------------------------------------+
| REGEXP_REPLACE('My cat has cuts', 'c.t', 'dog') |
+-------------------------------------------------+
| My dog has dogs                                 |
+-------------------------------------------------+

Reguliere expressies kunnen erg krachtig zijn, en in dit voorbeeld wordt een heel eenvoudig voorbeeld gebruikt. Om REGEXP_REPLACE() . te gebruiken effectief is, moet u het juiste patroon kennen om te gebruiken voor het gewenste resultaat.

Het is ook mogelijk om de volledige letterlijke tekenreeks als patroon op te geven, net zoals u zou gebruiken met de REPLACE() functie.

Daarom zouden we het eerste voorbeeld op deze pagina kunnen herschrijven om REGEXP_REPLACE() te gebruiken in plaats van REPLACE() .

Hier is een voorbeeld waarin ze naast elkaar worden weergegeven om te illustreren wat ik bedoel:

SELECT 
    REPLACE('My dog likes to dig holes', 'dog', 'cat') AS "REPLACE()",
    REGEXP_REPLACE('My dog likes to dig holes', 'dog', 'cat') AS "REGEXP_REPLACE()";

Resultaat:

+---------------------------+---------------------------+
| REPLACE()                 | REGEXP_REPLACE()          |
+---------------------------+---------------------------+
| My cat likes to dig holes | My cat likes to dig holes |
+---------------------------+---------------------------+

Ook de REGEXP_REPLACE() functie volgt de hoofdlettergevoeligheidsregels van de effectieve sortering. Het matchen wordt hoofdletterongevoelig uitgevoerd voor hoofdletterongevoelige sorteringen en hoofdlettergevoelig voor hoofdlettergevoelige sorteringen en voor binaire gegevens. De hoofdlettergevoeligheid van de sortering kan echter worden overschreven met de (?i ) en (?-i ) PCRE-vlaggen.

Zie hoe REGEXP_REPLACE() Werkt in MariaDB voor voorbeelden van hoofdlettergevoeligheid en meer.


  1. Invoegverklaringen genereren uit tekstbestanden voor SQL Server-tabel in SQL Server - SQL Server / TSQL-zelfstudie, deel 106

  2. Zoek uit of een tabel is gepartitioneerd in SQL Server (T-SQL)

  3. django.db.utils.ProgrammingError:relatie bestaat al

  4. Gebruik FILEGROUP_ID() om de ID van een bestandsgroep in SQL Server te retourneren