В MySQL можете да използвате INSERT()
функция за вмъкване на низ в друг низ.
Можете или да замените части от низа с друг низ (например да замените дума), или да го вмъкнете, като запазите оригиналния низ (например добавите дума). Функцията приема 4 аргумента, които определят какъв е оригиналния низ, позицията, с която да се вмъкне новия низ, броя на знаците за изтриване от оригиналния низ и новия низ за вмъкване.
Ето синтаксиса:
INSERT(str,pos,len,newstr)
Където str
е оригиналният низ, pos
е позицията, в която ще бъде вмъкнат новият низ, len
е броят на знаците за изтриване от оригиналния низ и newstr
е новият низ за вмъкване.
Заменете дума
Ето пример, в който използвам INSERT()
за да замените дума в низ:
SELECT INSERT('Cats and dogs', 6, 3, 'like');
Резултат:
Cats like dogs
Това ефективно замества думата and
с думата like
. Използвах 6
защото думата и започваше с 6 знака, а аз използвах 3
защото това е колко знака искам да изтрия (думата and
е дълъг 3 знака).
Вмъкнете дума
Тук просто вмъквам дума, без да изтривам нищо от оригиналния низ:
SELECT INSERT('Cats and dogs', 10, 0, 'big ');
Резултат:
Cats and big dogs
Причината, поради която това не изтрива нищо от оригиналния низ, е, че посочих 0
(което означава, че нула знаци трябва да бъдат изтрити).
Стойности извън обхвата
Ако посочите позиция, която е извън дължината на оригиналния низ, MySQL ще върне оригиналния низ непроменен.
Пример:
SELECT INSERT('Cats and dogs', 20, 4, 'rabbits');
Резултат:
Cats and dogs
Ето още един пример, в който използвам отрицателна начална позиция:
SELECT INSERT('Cats and dogs', -1, 4, 'rabbits');
Резултат:
Cats and dogs
Това е една от разликите между INSERT()
на MySQL функция и STUFF()
на Transact-SQL функция. В T-SQL, STUFF()
функцията ще върне NULL
в тези случаи.
Вмъкване на NULL стойности
Друга област, където INSERT()
на MySQL се различава от STUFF()
на T-SQL е със стойности NULL. Ако се опитате да вмъкнете стойност NULL, MySQL ще върне NULL
.
SELECT INSERT('Cats and dogs', 6, 3, NULL);
Резултат:
NULL