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