No MySQL, você pode usar o
INSERT()
função para inserir uma string em outra string. Você pode substituir partes da string por outra string (por exemplo, substituir uma palavra) ou inseri-la mantendo a string original (por exemplo, adicionar uma palavra). A função aceita 4 argumentos que determinam qual é a string original, a posição com a qual inserir a nova string, o número de caracteres a serem excluídos da string original e a nova string a ser inserida.
Aqui está a sintaxe:
INSERT(str,pos,len,newstr)
Onde
str
é a string original, pos
é a posição em que a nova string será inserida, len
é o número de caracteres a serem excluídos da string original e newstr
é a nova string a ser inserida. Substituir uma palavra
Aqui está um exemplo onde eu uso
INSERT()
para substituir uma palavra dentro de uma string:SELECT INSERT('Cats and dogs', 6, 3, 'like');
Resultado:
Cats like dogs
Isso substitui efetivamente a palavra
and
com a palavra like
. Eu usei 6
porque a palavra e começou na marca de 6 caracteres, e eu usei 3
porque é quantos caracteres quero excluir (a palavra and
tem 3 caracteres). Inserir uma palavra
Aqui eu simplesmente insiro uma palavra sem excluir nada da string original:
SELECT INSERT('Cats and dogs', 10, 0, 'big ');
Resultado:
Cats and big dogs
A razão pela qual isso não exclui nada da string original é porque eu especifiquei
0
(o que significa que zero caracteres devem ser excluídos). Valores fora do intervalo
Se você especificar uma posição que esteja fora do comprimento da string original, o MySQL retornará a string original inalterada.
Exemplo:
SELECT INSERT('Cats and dogs', 20, 4, 'rabbits');
Resultado:
Cats and dogs
Aqui está outro exemplo onde eu uso uma posição inicial negativa:
SELECT INSERT('Cats and dogs', -1, 4, 'rabbits');
Resultado:
Cats and dogs
Esta é uma das diferenças entre o
INSERT()
do MySQL função e STUFF()
do Transact-SQL função. Em T-SQL, o STUFF()
função retornaria NULL
nesses casos. Inserindo valores NULL
Outra área onde o
INSERT()
do MySQL difere do STUFF()
do T-SQL está com valores NULL. Se você tentar inserir um valor NULL, o MySQL retornará NULL
. SELECT INSERT('Cats and dogs', 6, 3, NULL);
Resultado:
NULL