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
.