En MySQL, puede usar INSERT()
función para insertar una cadena en otra cadena.
Puede reemplazar partes de la cadena con otra cadena (por ejemplo, reemplazar una palabra) o puede insertarla manteniendo la cadena original (por ejemplo, agregar una palabra). La función acepta 4 argumentos que determinan cuál es la cadena original, la posición con la que insertar la nueva cadena, la cantidad de caracteres que se eliminarán de la cadena original y la nueva cadena que se insertará.
Aquí está la sintaxis:
INSERT(str,pos,len,newstr)
Donde str
es la cadena original, pos
es la posición en la que se insertará la nueva cadena, len
es el número de caracteres a eliminar de la cadena original, y newstr
es la nueva cadena a insertar.
Reemplazar una palabra
Aquí hay un ejemplo donde uso INSERT()
para reemplazar una palabra dentro de una cadena:
SELECT INSERT('Cats and dogs', 6, 3, 'like');
Resultado:
Cats like dogs
Esto reemplaza efectivamente la palabra and
con la palabra like
. Usé 6
porque la palabra y comenzaba en la marca de 6 caracteres, y usé 3
porque esa es la cantidad de caracteres que quiero eliminar (la palabra and
tiene 3 caracteres).
Insertar una palabra
Aquí simplemente inserto una palabra sin borrar nada de la cadena original:
SELECT INSERT('Cats and dogs', 10, 0, 'big ');
Resultado:
Cats and big dogs
La razón por la que esto no elimina nada de la cadena original es porque especifiqué 0
(lo que significa que se deben eliminar cero caracteres).
Valores fuera de rango
Si especifica una posición que está fuera de la longitud de la cadena original, MySQL devolverá la cadena original sin cambios.
Ejemplo:
SELECT INSERT('Cats and dogs', 20, 4, 'rabbits');
Resultado:
Cats and dogs
Aquí hay otro ejemplo donde uso una posición inicial negativa:
SELECT INSERT('Cats and dogs', -1, 4, 'rabbits');
Resultado:
Cats and dogs
Esta es una de las diferencias entre INSERT()
de MySQL función y STUFF()
de Transact-SQL función. En T-SQL, STUFF()
la función devolvería NULL
en estos casos.
Inserción de valores NULL
Otra área donde INSERT()
de MySQL difiere de STUFF()
de T-SQL es con valores NULL. Si intenta insertar un valor NULL, MySQL devolverá NULL
.
SELECT INSERT('Cats and dogs', 6, 3, NULL);
Resultado:
NULL