• 4.5.2017
  • Ing. Jan Zedníček - Data & Finance
  • 4

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 SUBSTRING

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

5/5 - (1 vote)

Ing. Jan Zedníček - Data & Finance

Jmenuji se Honza Zedníček a působím jako freelancer. Tuto práci dělám pro různé firmy již přes 10 let. Před tím jsem dlouhou dobu pracoval také jako BI developer, finanční controller, analytik a krátce jako finanční manažer. Vše pro společnosti z oblasti IT, bankovnictví a výroby. Po práci si rád zahraju tenis, volejbal, šachy, zajdu do posilovny a rád ochutnávám dobré rumy. Svoje znalosti a názory se snažím už několik let zapisovat na tento web, aby sloužily i někomu dalšímu - zejména studentům a zájemcům o informace z oblastí Business intelligence, korporátních financí a reportingu.

=> Přihlašte se do naší Excel facebook skupiny (1.4k+ členů), kde si pomáháme Excel CZ/SK diskuse »
=> Pokud vám článek pomohl, sdílejte ho nebo mě uveďte na vašich webových stránkách jako užitečný zdroj informací.

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

  1. 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. 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. 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’.”

Leave a Reply

Your email address will not be published. Required fields are marked *