sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo insertar una cadena en otra cadena en SQL Server usando STUFF()

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 .