V MySQL můžete použít INSERT()
funkce pro vložení řetězce do jiného řetězce.
Části řetězce můžete buď nahradit jiným řetězcem (např. nahradit slovo), nebo jej můžete vložit při zachování původního řetězce (např. přidat slovo). Funkce přijímá 4 argumenty, které určují, jaký je původní řetězec, pozici, na kterou se má vložit nový řetězec, počet znaků, které se mají z původního řetězce odstranit, a nový řetězec, který se má vložit.
Zde je syntaxe:
INSERT(str,pos,len,newstr)
Kde str
je původní řetězec, pos
je pozice, na kterou bude vložen nový řetězec, len
je počet znaků, které se mají odstranit z původního řetězce, a newstr
je nový řetězec, který se má vložit.
Nahradit slovo
Zde je příklad, kdy používám INSERT()
chcete-li nahradit slovo v řetězci:
SELECT INSERT('Cats and dogs', 6, 3, 'like');
Výsledek:
Cats like dogs
To efektivně nahrazuje slovo and
se slovem like
. Použil jsem 6
protože slovo a začínalo na 6znakové značce a já jsem použil 3
protože tolik znaků chci smazat (slovo and
má 3 znaky).
Vložit slovo
Zde jednoduše vložím slovo, aniž bych cokoli vymazal z původního řetězce:
SELECT INSERT('Cats and dogs', 10, 0, 'big ');
Výsledek:
Cats and big dogs
Důvod, proč se nic z původního řetězce neodstraní, je ten, že jsem zadal 0
(což znamená, že by se nemělo smazat nula znaků).
Hodnoty mimo rozsah
Pokud zadáte pozici, která je mimo délku původního řetězce, MySQL vrátí původní řetězec nezměněný.
Příklad:
SELECT INSERT('Cats and dogs', 20, 4, 'rabbits');
Výsledek:
Cats and dogs
Zde je další příklad, kdy používám zápornou výchozí pozici:
SELECT INSERT('Cats and dogs', -1, 4, 'rabbits');
Výsledek:
Cats and dogs
Toto je jeden z rozdílů mezi INSERT()
MySQL funkce a STUFF()
Transact-SQL funkce. V T-SQL, STUFF()
funkce vrátí NULL
v těchto případech.
Vložení hodnot NULL
Další oblast, kde je INSERT()
MySQL se liší od STUFF()
T-SQL je s hodnotami NULL. Pokud se pokusíte vložit hodnotu NULL, MySQL vrátí NULL
.
SELECT INSERT('Cats and dogs', 6, 3, NULL);
Výsledek:
NULL