sql >> Databáze >  >> RDS >> Sqlserver

Jak vložit řetězec do jiného řetězce na SQL Server pomocí STUFF()

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 .


  1. Přidejte parametr data do dotazu Oracle

  2. Jak migrovat databázi Oracle z AWS EC2 na AWS RDS

  3. Oprava „ERROR 1250 (42000):Tabulku „…“ z jednoho z SELECT nelze použít v klauzuli ORDER“ v MariaDB

  4. Jak Tand() funguje v PostgreSQL