Se você estiver familiarizado com o SQL Server, talvez saiba que pode usar o T-SQL
STUFF()
função para inserir uma string dentro de uma string. Acontece que o MySQL tem uma função semelhante – mas com um nome diferente. MySQL
INSERT()
função faz essencialmente a mesma coisa que o T-SQL STUFF()
função faz. Com exceção de algumas pequenas diferenças (veja abaixo), ambas as funções funcionam exatamente da mesma forma.
Sintaxe
Aqui está a sintaxe oficial de cada uma dessas funções.
T-SQL – A função STUFF()
STUFF ( character_expression , start , length , replaceWith_expression )
MySQL – A função INSERT()
INSERT(str,pos,len,newstr)
Embora cada uma dessas definições use uma terminologia diferente, elas basicamente fazem a mesma coisa.
Exemplos
Aqui está um exemplo de cada uma dessas funções em ação.
T-SQL – A função STUFF()
SELECT STUFF('Cats and dogs', 6, 3, 'like');
Resultado:
Cats like dogs
MySQL – A função INSERT()
SELECT INSERT('Cats and dogs', 6, 3, 'like');
Resultado:
Cats like dogs
Como você pode ver, a única diferença é o nome da função. Podemos portar um para o outro simplesmente alterando o nome da função.
Diferenças entre STUFF() e INSERT()
Existem algumas diferenças em como essas funções funcionam. Em particular, as duas principais diferenças são como eles lidam com:
- Posições fora do intervalo
- Valores NULOS
Essas diferenças são explicadas a seguir.
Posições fora do intervalo
Se você tentar inserir em uma posição que está fora do comprimento da string original, o
INSERT()
do MySQL A função retornará a string original. Por outro lado, o STUFF()
do T-SQL função retornará NULL
. T-SQL – A função STUFF()
SELECT STUFF('Cats and dogs', 20, 4, 'rabbits');
Resultado:
NULL
MySQL – A função INSERT()
SELECT INSERT('Cats and dogs', 20, 4, 'rabbits');
Resultado:
Cats and dogs
Valores NULOS
Essas duas funções também diferem na forma como lidam com quaisquer valores NULL que você tenta inserir.
T-SQL – A função STUFF()
SELECT STUFF('Cats and dogs', 6, 3, NULL);
Resultado:
Cats dogs
T-SQL – A função INSERT()
SELECT INSERT('Cats and dogs', 6, 3, NULL);
Resultado:
NULL