SQL SUBSTRING funkce – Část řetězce

Funkce SUBSTRING slouží v SQL k výběru části textového řetězce v textu. Tato funkce patří do textových funkcí – string functions. Před časem jsem napsal velký přehled T-SQL textových funkcí -najdete ho je zde

Syntaxe

SELECT SUBSTRING(text, <počáteční pozice znaku textu, který chceme vybrat>, <počet znaků od počátečního znaku>)

Funkce má 3 argumenty:

  • Pole s textem ve kterém provádíme výběr textu
  • Počáteční pozice – číselná pozice znaku, v textu od kterého budeme část textu vybírat
  • Počet znaků od počátečního znaku

Příklad funkce – část řetězce

DECLARE @TEXT AS VARCHAR(100) = '.gerge.OPGKER/Text, který chceme vybrat/ FWG--efwER'
SELECT SUBSTRING(@TEXT,15,25)

SQL SUBSTRING

Tip: Počáteční pozici nemusíme počítat ručně, dá se využít ostatních textových funkcí – CHARINDEX, PATINDEX

Více o funkci na webu Microsoft zde

_______________________________________________________________________________________________
Intelligent technologies - podniková řešení a školení
SQL SUBSTRING funkce – Část řetězce
Hodnocení

4 thoughts on “SQL SUBSTRING funkce – Část řetězce

  1. Michal

    Dobrý den, mám tabulku, ve které část řetězce sloupce SDATA obsahuje číslo zakázky. Tabulka obsahuje vždy několik řádků se stejným číslem zakázky. Potřebuji napsat SELECT tak, aby výstupem byl seznam, kde číslo zakázky bude vždy jen jednou. Tzn. GROUP BY dle čísla zakázky. Ale to číslo je SUBSTRING. Něco jako toto:

    SELECT SUBSTRING(sdata,4,9) AS [Zakázka č.]
    FROM [data_a]
    GROUP BY [Zakázka č.]

    Děkuji za radu.

  2. Honza Zedníček Post author

    Dobrý den Michale,

    Nejjednodušeji s k výsledku dostanete přes DISTINCT:

    SELECT DISTINCT SUBSTRING(sdata,4,9) AS [Zakázka č.]
    FROM [data_a]

    JInak váš způsob bude také fungovat a máte to v podstatě dobře..Akorát dejte do GROUP BY substring, který máte v selectu. Můžete připojit i COUNT, abyste vidětl kolikrát se daná zakázka v tanulce vyskytuje.

    SELECT SUBSTRING(sdata,4,9) AS [Zakázka č.]
    FROM [data_a]
    GROUP BY SUBSTRING(sdata,4,9) AS [Zakázka č.]

    SELECT SUBSTRING(sdata,4,9) AS [Zakázka č.], COUNT(*) AS [Počet_zakázek]
    FROM [data_a]
    GROUP BY SUBSTRING(sdata,4,9) AS [Zakázka č.]

    DOufám že pomohlo,
    Honza

    1. Michal

      Dobrý den Honzo,
      super, díky moc! Akorát to jsem musel dát jen GROUP BY SUBSTRING(sap_sdata,4,9). To AS [Zakázka č.] to už nechtělo sežrat. Chyba “Msg 156, Level 15, State 1, Line 46 Incorrect syntax near the keyword ‘AS’.”

Napsat komentář

Vaše emailová adresa nebude zveřejněna.

This site uses Akismet to reduce spam. Learn how your comment data is processed.