Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como inserir uma string em outra string no SQL Server usando STUFF()


No SQL Server, você pode usar o T-SQL STUFF() função para inserir uma string em outra string. Isso permite que você faça coisas como inserir uma palavra em uma posição específica. Também permite substituir uma palavra em uma posição específica.

Aqui está a sintaxe oficial:
STUFF ( character_expression , start , length , replaceWith_expression )
  • character_expression é a string original. Na verdade, pode ser uma constante, variável ou coluna de caracteres ou dados binários.
  • start especifica a posição inicial (ou seja, onde a nova string será inserida).
  • length é quantos caracteres devem ser excluídos da string original.
  • replaceWith_expression é a string que está sendo inserida. replaceWith_expression pode ser uma constante, variável ou coluna de caracteres ou dados binários.


Substituir uma palavra


Aqui está um exemplo onde eu substituo uma palavra dentro de uma string.
SELECT STUFF('Cats and dogs', 6, 3, 'like');

Resultado:
Cats like dogs

Neste caso, especifico que a palavra like deve ser inserido na posição 6, e que 3 caracteres devem ser apagados da string original (isto apaga a palavra and ). Portanto, a palavra and é excluído e a palavra like está inserido.

Inserir uma palavra


Aqui está um exemplo de inserção de uma palavra sem excluir nada da string original:
SELECT STUFF('Cats and dogs', 10, 0, 'big ');

Resultado:
Cats and big dogs

Nada é excluído da string original porque eu especifiquei 0 como terceiro argumento.

Valores fora do intervalo


Se a posição inicial estiver fora do comprimento da string original, um valor NULL será retornado.

Exemplo:
SELECT STUFF('Cats and dogs', 20, 4, 'rabbits');

Resultado:
NULL

Nesse caso, a string original não tem 20 caracteres, então o resultado é NULL .

A mesma coisa acontece se você fornecer 0 ou um número negativo:
SELECT STUFF('Cats and dogs', -1, 4, 'rabbits');

Resultado:
NULL

O resultado desses exemplos contrasta com o INSERT() do MySQL função, que teria retornado a string original neste cenário. INSERT() do MySQL faz basicamente a mesma coisa que o STUFF() do T-SQL (exceto em casos como estes).

Inserindo valores NULL


Se você inserir um valor NULL, seu resultado simplesmente removerá o número declarado de caracteres da posição declarada. Em outras palavras, nada é inserido, mas os caracteres ainda são removidos conforme especificado.

Exemplo:
SELECT STUFF('Cats and dogs', 6, 3, NULL);

Resultado:
Cats dogs

Esta é outra área em que o MySQL difere do T-SQL. Fazendo este exemplo com o INSERT() do MySQL função teria retornado um resultado de NULL .