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.