Com a tal, la manipulació de cadenes és una tasca habitual que implica manipular i transformar els valors de cadenes a un format específic.
Una de les funcions més potents d'SQL que s'ocupa de les operacions de cadena és la funció REGEXP_REPLACE(). Aquesta funció ens permet realitzar la cerca i substitució basada en expressions regulars. Si estàs familiaritzat amb l'expressió regular, saps com de poderosa pot ser aquesta funció.
En aquest tutorial, aprendrem com podem utilitzar aquesta funció per cercar i substituir les cadenes a la base de dades SQL.
SQL REGEXP_REPLACE
L'SQL REGEXP_REPLACE() és una funció que ens permet realitzar la concordança i substitució de patrons basats en expressions regulars dins d'una cadena determinada.
L'expressió regular, o regex, és un patró establert i marcadors de posició que ens permeten coincidir i manipular les cadenes o subcadenes que segueixen un patró específic.
És bo tenir en compte que cada motor de base de dades pot implementar lleugerament la sintaxi i la funcionalitat de la funció.
Tanmateix, podem expressar la seva sintaxi de la següent manera:
REGEXP_REPLACE(cadena_entrada, patró, substitució [, banderes])
Els paràmetres de la funció s'expressen de la següent manera:
- cadena_entrada: especifica la cadena dins de la qual volem cercar i substituir.
- Patró: especifica el patró d'expressió regular que volem que coincideixi amb la cadena d'entrada.
- Substitució: especifica la cadena que substituirà les subcadenes coincidents.
- Senyals: aquest és un conjunt de senyaladors opcionals que poden ajudar a modificar la funcionalitat de l'expressió regular. Per exemple, podem habilitar la cerca global, la concordança que no distingeix entre majúscules i minúscules, etc. Aquesta característica varia segons el motor de la base de dades.
Exemples:
Per entendre millor com funciona aquesta funció, mirem alguns exemples sobre com utilitzar-la.
Exemple 1: ús bàsic
Suposem que tenim una taula que conté la informació dels empleats tal com es mostra a la sortida d'exemple següent:
Penseu en un cas en què volem substituir l'ocurrència de la cadena 'Charlie' per 'Matthew'. Podem utilitzar la consulta de la següent manera:
SELECCIONAREGEXP_REPLACE(nom, 'Charlie', 'Matthew') AS new_name
DE
empleats;
L'exemple donat mostra una cerca bàsica i substitució per trobar la cadena 'Charlie' a la columna 'first_name' i substituir-la per 'Matthew'.
Sortida:
Exemple 2: Substitució que no distingeix entre majúscules i minúscules
En alguns casos, és possible que vulgueu realitzar una cerca que no distingeix entre majúscules i minúscules. Això vol dir que la funció només mirarà el contingut de la cadena i no la minúscula real de les lletres alfanumèriques.
En aquest cas, utilitzem la 'i' com a indicador de funció de la següent manera:
SELECT REGEXP_REPLACE(product_description, Samsung, Apple, 'i') COM modificatDE productes;
En establir la bandera a 'i', la funció coincideix amb totes les paraules que coincideixin amb 'Samsung', independentment de la majúscula.
Conclusió
En aquest exemple, hem explorat com utilitzar i treballar amb la funció REGEXP_REPLACE() per dur a terme la cerca i substitució basada en patrons d'expressions regulars.