Pokud znáte SQL Server, možná víte, že můžete použít T-SQL STUFF()
funkce pro vložení řetězce do řetězce. Jak se ukázalo, MySQL má podobnou funkci – ale s jiným názvem.
INSERT()
MySQL Funkce dělá v podstatě totéž, co T-SQL STUFF()
funkce ano.
S výjimkou několika drobných rozdílů (viz níže) fungují obě funkce úplně stejně.
Syntaxe
Zde je oficiální syntaxe každé z těchto funkcí.
T-SQL – funkce STUFF()
STUFF ( character_expression , start , length , replaceWith_expression )
MySQL – funkce INSERT()
INSERT(str,pos,len,newstr)
Ačkoli každá z těchto definic používá jinou terminologii, v zásadě dělají totéž.
Příklady
Zde je příklad každé z těchto funkcí v akci.
T-SQL – funkce STUFF()
SELECT STUFF('Cats and dogs', 6, 3, 'like');
Výsledek:
Cats like dogs
MySQL – funkce INSERT()
SELECT INSERT('Cats and dogs', 6, 3, 'like');
Výsledek:
Cats like dogs
Jak vidíte, jediným rozdílem je název funkce. Můžeme přenést jeden do druhého jednoduše změnou názvu funkce.
Rozdíly mezi STUFF() a INSERT()
Existuje několik rozdílů v tom, jak tyto funkce fungují. Zejména dva hlavní rozdíly spočívají v tom, jak se zabývají:
- Pozice mimo rozsah
- Hodnoty NULL
Tyto rozdíly jsou vysvětleny níže.
Pozice mimo rozsah
Pokud se pokusíte vložit na pozici, která je mimo délku původního řetězce, INSERT()
MySQL funkce vrátí původní řetězec. Na druhou stranu STUFF()
T-SQL funkce vrátí NULL
.
T-SQL – funkce STUFF()
SELECT STUFF('Cats and dogs', 20, 4, 'rabbits');
Výsledek:
NULL
MySQL – funkce INSERT()
SELECT INSERT('Cats and dogs', 20, 4, 'rabbits');
Výsledek:
Cats and dogs
Hodnoty NULL
Tyto dvě funkce se také liší v tom, jak nakládají s hodnotami NULL, které se pokoušíte vložit.
T-SQL – funkce STUFF()
SELECT STUFF('Cats and dogs', 6, 3, NULL);
Výsledek:
Cats dogs
T-SQL – funkce INSERT()
SELECT INSERT('Cats and dogs', 6, 3, NULL);
Výsledek:
NULL