MariaDB
 sql >> Database >  >> RDS >> MariaDB

2 modi per sostituire una sottostringa in MariaDB

Se devi sostituire una sottostringa con un'altra stringa in MariaDB, ecco due approcci che puoi usare.

Il REPLACE() Funzione

In MariaDB, il REPLACE() La funzione è progettata specificamente per sostituire una sottostringa all'interno di un'altra stringa.

Fornisci tre argomenti quando chiami la funzione. Queste sono la stringa, la sottostringa e la stringa sostitutiva.

Esempio:

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

Risultato:

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

In questo caso abbiamo sostituito la sottostringa dog con cat .

Se la stringa da sostituire si verifica più volte all'interno della stringa, tutte le occorrenze vengono sostituite:

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

Risultato:

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

Il REPLACE() la funzione esegue una corrispondenza con distinzione tra maiuscole e minuscole.

Guarda come REPLACE() Funziona in MariaDB per ulteriori esempi.

Il REGEXP_REPLACE() Funzione

Il REGEXP_REPLACE() la funzione è simile a REPLACE() funzione, tranne per il fatto che ti consente di eseguire la corrispondenza dei modelli utilizzando espressioni regolari.

Questo rende REGEXP_REPLACE() più potente di REPLACE() , poiché puoi confrontare parti di una stringa per sostituire sottostringhe che sarebbe più difficile o impossibile da abbinare quando si utilizza semplicemente REPLACE() .

Esempio:

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

Risultato:

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

Le espressioni regolari possono essere molto potenti e questo esempio usa un esempio molto semplice. Per utilizzare REGEXP_REPLACE() in modo efficace, dovrai conoscere lo schema corretto da utilizzare per il risultato desiderato.

È anche possibile fornire la stringa letterale completa come modello, proprio come useresti con REPLACE() funzione.

Pertanto, potremmo riscrivere il primo esempio in questa pagina per utilizzare REGEXP_REPLACE() invece di REPLACE() .

Ecco un esempio che li esegue fianco a fianco per illustrare cosa intendo:

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()";

Risultato:

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

Inoltre, il REGEXP_REPLACE() segue le regole di distinzione tra maiuscole e minuscole delle regole di confronto effettive. La corrispondenza viene eseguita senza distinzione tra maiuscole e minuscole per le regole di confronto senza distinzione tra maiuscole e minuscole e con distinzione tra maiuscole e minuscole per le regole di confronto con distinzione tra maiuscole e minuscole e per i dati binari. Tuttavia, la distinzione tra maiuscole e minuscole di confronto può essere ignorata utilizzando (?i ) e (?-i ) Flag PCRE.

Guarda come REGEXP_REPLACE() Funziona in MariaDB per esempi di distinzione tra maiuscole e minuscole e altro.