SAP Funkce HANA SQL: Typy a příklady
⚡ Chytré shrnutí
SAP Funkce HANA SQL transformují hodnoty uvnitř dotazu bez přesunu dat do aplikační vrstvy. Sedm kategorií zahrnuje konverze datových typů, datum a čas, fulltext, čísla, řetězce, okna a různé operace.

SAP Funkce HANA SQL
SAP HANA Poskytuje následující SAP Funkce HANA-
- Funkce konverze datových typů – Funkce konverze datových typů se používá k převodu jednoho datového typu na jiný. Níže je uveden seznam funkcí konverze datových typů – např. CAST, TO_ALPHANUM, TO_BIGINT, TO_BINARY atd.
- Funkce data a času – Funkce Date Time se používají k převodu data/času do jiného formátu. Např. – ADD_DAYS, ADD_MONTHS, ADD_SECOND atd.
- Fulltextové funkce – Fulltextové funkce se používají pro textové vyhledávání. Např. – SCORE atd.
- Číselné funkce – Číselné funkce přijímají jako vstup číselnou hodnotu nebo řetězec s číselnými znaky a vracejí číselné hodnoty. Např. ABS, ROUND, POWER atd.
- Funkce řetězců – Funkce pracující s řetězci berou jako vstup řetězec, zpracovávají ho a vracejí hodnotu podle funkce. Např. (ASCII, CHAR, CONCAT atd.)
- Funkce okna – Funkce okna umožňují uživateli rozdělit sadu výsledků dotazu do skupin řádků pojmenovaných okenní partice. Např. RANK (), DENSE_RANK (), ROW_NUMBER () atd.
- Různé funkce - Existuje několik dalších funkcí, které se používají pro různé úlohy. Např. – CONVERT_CURRENCY, CURRENT_SCHEMA atd.
Každá výše uvedená funkce je vyhodnocena uvnitř databázového enginu, a proto je vkládání logiky do funkce téměř vždy rychlejší než načítání řádků a jejich zpracování v aplikaci. Níže uvedené příklady používají tabulku DUMMY, systémovou tabulku s jedním řádkem, která existuje čistě proto, aby bylo možné výraz testovat bez kontaktu se skutečnými daty.
Skalární, agregační a okenní funkce
Před příklady jeden rozdíl určuje, jak se funkce v dotazu chová: kolik řádků vstupuje a kolik jich vystupuje.
| Kategorie | Řádky dovnitř : řádky ven | Potřebuje GROUP BY? | Příklady |
|---|---|---|---|
| Skalární | Jeden řádek na jeden řádek | Ne | HORNÍ, KULO, DATUM_DO, ODLITÍ |
| Agregát | Mnoho řádků na jeden řádek | Ano, pokud celá sada není jedna skupina | SOUČET, AVG, POČET, MIN, MAX |
| Okno | Mnoho řádků na mnoho řádků | Ne, místo toho se používá OVER | POŘADÍ, HUSTOTA_POŘADÍ, ČÍSLO_ŘÁDKU, ZPOŽDĚNÍ |
| Tabulka | Vrátí sadu výsledků | Používá se v klauzuli FROM | DATUM_VYTVOŘENÍ_SÉRIE |
Praktickým důsledkem je, že agregační funkce sbalí podrobnosti, zatímco okenní funkce je zachová. Dotazování se na každého zaměstnance spolu s průměrem jeho oddělení vyžaduje okenní funkci, protože GROUP BY by jednotlivé řádky zcela odstranila.
Společný SAP Funkce HANA s příklady
Níže uvedené příkazy lze vložit přímo do konzole SQL. Každý z nich demonstruje jednu kategorii z výše uvedeného seznamu.
1) Funkce pro práci s řetězci. Tyto funkce přijímají vstupní znaky a vracejí odvozenou hodnotu.
SELECT UPPER('sap hana') AS UPPER_TEXT, LENGTH('SAP HANA') AS TEXT_LENGTH, CONCAT('SAP ', 'HANA') AS JOINED, SUBSTRING('SAP HANA', 5, 4) AS PART, REPLACE('SAP HANA', 'HANA', 'S/4') AS SWAPPED, TRIM(' padded ') AS CLEANED FROM DUMMY;
2) Číselné funkce. Chování při zaokrouhlování stojí za to otestovat, protože ROUND používá komerční zaokrouhlování, zatímco FLOOR a CEIL se vždy pohybují jedním směrem.
SELECT ABS(-45.7) AS ABSOLUTE_VALUE, ROUND(123.4567, 2) AS ROUNDED, FLOOR(9.9) AS ROUNDED_DOWN, CEIL(9.1) AS ROUNDED_UP, POWER(2, 10) AS RAISED, MOD(17, 5) AS REMAINDER FROM DUMMY;
3) Funkce data a času. Tyto jsou nejčastěji potřeba pro vykazování období.
SELECT CURRENT_DATE AS TODAY, ADD_DAYS(CURRENT_DATE, 30) AS IN_30_DAYS, ADD_MONTHS(CURRENT_DATE, -1) AS LAST_MONTH, DAYS_BETWEEN('2026-01-01', CURRENT_DATE) AS ELAPSED, LAST_DAY(CURRENT_DATE) AS MONTH_END, WEEKDAY(CURRENT_DATE) AS DAY_INDEX FROM DUMMY;
4) Převodní funkce. Explicitní konverze zabraňuje tichému převodu typů, který zpomaluje klauzuli WHERE.
SELECT CAST('1234' AS INTEGER) AS AS_NUMBER, TO_VARCHAR(CURRENT_DATE, 'DD.MM.YYYY') AS AS_TEXT, TO_DECIMAL(1234.5678, 10, 2) AS AS_DECIMAL FROM DUMMY;
Chování typů a limity každého cílového typu jsou popsány v SAP Datové typy HANA.
Vysvětlení funkcí okna
Funkce okna provádí výpočet napříč sadou řádků souvisejících s aktuálním řádkem, aniž by je sbalila. Klauzule OVER definuje tuto sadu a má dvě volitelné části: PARTITION BY rozděluje data do skupin a ORDER BY opravuje pořadí uvnitř každé skupiny.
SELECT DEPARTMENT, EMP_NAME, SALARY, ROW_NUMBER() OVER (PARTITION BY DEPARTMENT ORDER BY SALARY DESC) AS ROW_NUM, RANK() OVER (PARTITION BY DEPARTMENT ORDER BY SALARY DESC) AS RANKING, DENSE_RANK() OVER (PARTITION BY DEPARTMENT ORDER BY SALARY DESC) AS DENSE_RANKING, SUM(SALARY) OVER (PARTITION BY DEPARTMENT) AS DEPT_TOTAL FROM DHK_SCHEMA.EMPLOYEE;
Tyto tři funkce hodnocení se liší pouze tehdy, když se hodnoty shodují:
- ČÍSLO_ŘÁDKU nikdy se nedělí. Dva stejné platy stále dostávají 1 a 2, vybrané libovolně.
- HODNOST přiřadí svázaným řádkům stejný počet a poté je přeskakuje. Po dvou řádcích na čísle 1 následují řádky 3.
- DENSE_RANK dává svázaným řádkům stejný počet a nepřeskakuje. Dvě řady na čísle 1 jsou následovány řadami 2.
Funkce ROW_NUMBER se používá k deduplikaci, funkce RANK pro umístění v soutěžním stylu a funkce DENSE_RANK, pokud sekvence musí zůstat nepřerušená. Porovnání a logické symboly používané spolu s těmito funkcemi jsou popsány v SAP Provozovatelé HANAa struktura příkazů v SAP HANA SQL.
