Cambiar caracteres con STUFF en SQL Server
T-SQL permite cambiar los caracteres de una cadena resultado de una consulta con la función STUFF de SQL Server.
Con esta función se cambian los caracteres utilizando la posición, no funciona para reemplazar caracteres de un mismo valor. Por ejemplo, cambiar todas las letras “a” por “o”.
Sintaxis de STUFF
Veamos cómo es la sintaxis de esta función para comprender mejor su aplicación en las consultas.
STUFF(Entrada, inicio, tamaño, nuevoValor)
- Entrada, columna resultado de una consulta.
- Inicio, posición de inicio para cambiar los caracteres (la posición iniciar es 1).
- Tamaño, numero de caracteres a cambiar después de la posición.
- NuevoValor, valor que se incrustara a partir de la posición inicial hasta el tamaño de caracteres a modificar.
Cambiar caracteres con STUFF
Utilizando la sintaxis vista anteriormente vamos a cambiar una letra por otras en el nombre de un producto.
Agregaremos la función STUFF en una consulta de la siguiente manera.
SELECT
STUFF(ProductName, 2, 1,'abc') AS 'Producto'
FROM dbo.Products
WHERE ProductID=1;
En la consulta anterior estoy indicando que quiero cambiar un carácter a partir de la posición 2 por el valor abc en la columna ProductName.
Haciendo la comparación entre el resultado sin utilizar la función STUFF y utilizándolo tenemos lo siguiente.
En la imagen de la derecha se está eliminado la “h” que está en la posición 2 e indicamos que solo una letra se cambia; las otras letras de la primera palabra se recorren.
Podría interesarte Funciones escalares en SQL Server
Es posible eliminar caracteres mediante esta función respetando la sintaxis, con tan solo colocar en el valor únicamente las comillas simples.
Si lo aplicamos en la consulta anterior el resultado es “cai”, la letra h se cambia por el vacío indicado con las comillas.