V SQL Server můžete použít T-SQL STUFF()
funkce pro vložení řetězce do jiného řetězce. To vám umožní dělat věci, jako je vložení slova na konkrétní pozici. Umožňuje také nahradit slovo na konkrétní pozici.
Zde je oficiální syntaxe:
STUFF ( character_expression , start , length , replaceWith_expression )
character_expression
je původní řetězec. Ve skutečnosti to může být konstanta, proměnná nebo sloupec se znakovými nebo binárními daty.start
určuje počáteční pozici (tj. kam bude vložen nový řetězec).length
je počet znaků, které mají být odstraněny z původního řetězce.replaceWith_expression
je řetězec, který se vkládá.replaceWith_expression
může být konstanta, proměnná nebo sloupec znakových nebo binárních dat.
Nahradit slovo
Zde je příklad, kdy nahrazuji slovo v řetězci.
SELECT STUFF('Cats and dogs', 6, 3, 'like');
Výsledek:
Cats like dogs
V tomto případě uvádím, že slovo like
by měl být vložen na pozici 6 a že 3 znaky by měly být odstraněny z původního řetězce (tím se odstraní slovo and
). Tedy slovo and
se vymaže a slovo like
je vložen.
Vložit slovo
Zde je příklad vložení slova bez odstranění čehokoli z původního řetězce:
SELECT STUFF('Cats and dogs', 10, 0, 'big ');
Výsledek:
Cats and big dogs
Z původního řetězce se nic neodstraní, protože jsem zadal 0
jako třetí argument.
Hodnoty mimo rozsah
Pokud je počáteční pozice mimo délku původního řetězce, je vrácena hodnota NULL.
Příklad:
SELECT STUFF('Cats and dogs', 20, 4, 'rabbits');
Výsledek:
NULL
V tomto případě není původní řetězec dlouhý 20 znaků, takže výsledek je NULL
.
Totéž se stane, pokud zadáte 0
nebo záporné číslo:
SELECT STUFF('Cats and dogs', -1, 4, 'rabbits');
Výsledek:
NULL
Výsledky těchto příkladů jsou v kontrastu s INSERT()
MySQL funkce, která by v tomto scénáři vrátila původní řetězec. INSERT()
MySQL dělá v podstatě to samé jako STUFF()
T-SQL (kromě případů, jako jsou tyto).
Vložení hodnot NULL
Pokud vložíte hodnotu NULL, váš výsledek jednoduše odstraní uvedený počet znaků z uvedené pozice. Jinými slovy, nic se nevkládá, ale znaky jsou stále odstraněny, jak je uvedeno.
Příklad:
SELECT STUFF('Cats and dogs', 6, 3, NULL);
Výsledek:
Cats dogs
To je další oblast, kde se MySQL liší od T-SQL. Provedení tohoto příkladu s INSERT()
MySQL funkce by vrátila výsledek NULL
.