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