La función SUBSTITUTE reemplaza todas las apariciones de una subcadena de texto en un texto por otra subcadena de texto. También puede utilizarse para reemplazar solo una ocurrencia concreta de la subcadena de texto buscada.
SUBSTITUTE(
text,
old_text,
new_text
[, instance_num]
)
- text: Cadena de texto en la que se quiere reemplazar una subcadena de texto por otra, o nombre de la columna que contiene los textos en los que realizar la sustitución.
- old_text: Subcadena de texto a reemplazar.
- new_text: Subcadena de texto por la que se quiere reemplazar old_text.
- instance_num: Argumento opcional. Número de ocurrencia de old_text que se quiere reemplazar. Si se omite, el reemplazo se realizará para todas las ocurrencias.
La función SUBSTITUTE devuelve la cadena de texto text en la que todas las apariciones (o una ocurrancia concreta) del texto old_text han sido sustituidas por new_text.
Esta función no acepta el uso de comodines en el argumento old_text.
Si no se encuentra old_text en text, no se realiza ningún reemplazo. De hecho, la función es sensible a mayúsculas y minúsculas y a acentos. En el siguiente ejemplo se intenta reemplazar una "Á" por un "_", pero no se encuentra el carácter en cuestión, por lo que la cadena de texto original no es modificada:
La longitud del texto a reemplazar (old_text) y la longitud del texto por el cual se va a reemplazar (new_text) no tiene por qué ser la misma, lo que supone que la longitud del valor devuelto por esta función no tiene por qué coincidir con la longitud de text. Así, en el siguiente ejemplo se sustituye el espacio en blanco por la cadena "*_*", devolviéndose un texto de longitud mayor que la del nombre de producto original:
Si old_text es una cadena vacía, no se realiza ningún reemplazo. Por el contrario, si new_text es una cadena vacía, se elimina old_text sin ser reemplazado por ninguna otra cadena de texto. En este ejemplo se elimina la cadena "aximus " para dejar solo la inicial de la categoría y los últimos tres caracteres que indican el código del producto:
instance_num deberá ser un número entero mayor estricto que 0. En otro caso la función devolverá un error. Si este argumento es mayor que el número de ocurrencias del texto a reemplazar, no se realiza ningún reemplazo.
En el siguiente ejemplo se desea utilizar como código del producto su nombre en minúsculas sustituyendo todos los posibles espacios en blanco por el carácter de subrayado:
En este otro ejemplo se desea extraer del nombre del producto su inicial y los caracteres que sigan al espacio en blanco, con independencia de la longitud del texto que preceda o siga a este espacio. Para ello se calcula la posición del espacio en blanco y se extrae la cadena desde el segundo carácter hasta dicha posición (reemplazándose por una cadena de texto vacía). Finalmente se convierte todo el texto devuelto en minúsculas: