Si está familiarizado con SQL Server, es posible que sepa que puede usar T-SQL STUFF()
función para insertar una cadena dentro de una cadena. Resulta que MySQL tiene una función similar, pero con un nombre diferente.
INSERT()
de MySQL hace esencialmente lo mismo que T-SQL STUFF()
la función lo hace.
Con la excepción de un par de diferencias menores (ver más abajo), ambas funciones funcionan exactamente igual.
Sintaxis
Aquí está la sintaxis oficial de cada una de estas funciones.
T-SQL:la función STUFF()
STUFF ( character_expression , start , length , replaceWith_expression )
MySQL:la función INSERTAR()
INSERT(str,pos,len,newstr)
Aunque cada una de estas definiciones utiliza una terminología diferente, básicamente hacen lo mismo.
Ejemplos
Aquí hay un ejemplo de cada una de estas funciones en acción.
T-SQL:la función STUFF()
SELECT STUFF('Cats and dogs', 6, 3, 'like');
Resultado:
Cats like dogs
MySQL:la función INSERTAR()
SELECT INSERT('Cats and dogs', 6, 3, 'like');
Resultado:
Cats like dogs
Como puede ver, la única diferencia es el nombre de la función. Podemos portar uno al otro simplemente cambiando el nombre de la función.
Diferencias entre STUFF() e INSERT()
Hay un par de diferencias en cómo funcionan estas funciones. En particular, las dos principales diferencias son cómo tratan:
- Posiciones fuera de rango
- Valores NULOS
Estas diferencias se explican a continuación.
Posiciones fuera de rango
Si intenta insertar en una posición que está fuera de la longitud de la cadena original, INSERT()
de MySQL La función devolverá la cadena original. Por otro lado, STUFF()
de T-SQL la función devolverá NULL
.
T-SQL:la función STUFF()
SELECT STUFF('Cats and dogs', 20, 4, 'rabbits');
Resultado:
NULL
MySQL:la función INSERTAR()
SELECT INSERT('Cats and dogs', 20, 4, 'rabbits');
Resultado:
Cats and dogs
Valores NULOS
Estas dos funciones también difieren en cómo tratan cualquier valor NULL que intente insertar.
T-SQL:la función STUFF()
SELECT STUFF('Cats and dogs', 6, 3, NULL);
Resultado:
Cats dogs
T-SQL:la función INSERTAR()
SELECT INSERT('Cats and dogs', 6, 3, NULL);
Resultado:
NULL