En SQL Server, puede usar T-SQL STUFF()
función para insertar una cadena en otra cadena. Esto le permite hacer cosas como insertar una palabra en una posición específica. También te permite reemplazar una palabra en una posición específica.
Esta es la sintaxis oficial:
STUFF ( character_expression , start , length , replaceWith_expression )
character_expression
es la cadena original. En realidad, puede ser una constante, una variable o una columna de caracteres o datos binarios.start
especifica la posición inicial (es decir, donde se insertará la nueva cadena).length
es cuántos caracteres se eliminarán de la cadena original.replaceWith_expression
es la cadena que se está insertando.replaceWith_expression
puede ser una constante, una variable o una columna de caracteres o datos binarios.
Reemplazar una palabra
Aquí hay un ejemplo donde reemplazo una palabra dentro de una cadena.
SELECT STUFF('Cats and dogs', 6, 3, 'like');
Resultado:
Cats like dogs
En este caso, especifico que la palabra like
debe insertarse en la posición 6, y que 3 caracteres deben eliminarse de la cadena original (esto elimina la palabra and
). Así que la palabra and
se elimina y la palabra like
se inserta.
Insertar una palabra
Aquí hay un ejemplo de cómo insertar una palabra sin borrar nada de la cadena original:
SELECT STUFF('Cats and dogs', 10, 0, 'big ');
Resultado:
Cats and big dogs
No se elimina nada de la cadena original porque especifiqué 0
como tercer argumento.
Valores fuera de rango
Si la posición de inicio está fuera de la longitud de la cadena original, se devuelve un valor NULL.
Ejemplo:
SELECT STUFF('Cats and dogs', 20, 4, 'rabbits');
Resultado:
NULL
En este caso, la cadena original no tiene 20 caracteres, por lo que el resultado es NULL
.
Lo mismo sucede si proporciona 0
o un número negativo:
SELECT STUFF('Cats and dogs', -1, 4, 'rabbits');
Resultado:
NULL
El resultado de estos ejemplos contrasta con INSERT()
de MySQL función, que habría devuelto la cadena original en este escenario. INSERT()
de MySQL hace básicamente lo mismo que STUFF()
de T-SQL (excepto en casos como estos).
Inserción de valores NULL
Si inserta un valor NULL, su resultado simplemente eliminará el número indicado de caracteres de la posición indicada. En otras palabras, no se inserta nada, pero los caracteres aún se eliminan según lo especificado.
Ejemplo:
SELECT STUFF('Cats and dogs', 6, 3, NULL);
Resultado:
Cats dogs
Esta es otra área en la que MySQL difiere de T-SQL. Haciendo este ejemplo con INSERT()
de MySQL la función habría devuelto un resultado de NULL
.