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.