13.05.2022, Vladimír Klaus, navštíveno 1046x
Při práci na jednom projektu jsem dostal k dispozici CSV, které bylo třeba naimportovat do databáze. Ale nejprve bylo potřeba připravit příslušnou tabulku. A pokud to chcete udělat opravdu korektně, měli byste textová pole mít adekvátně dlouhá. Žádné NVARCHAR(MAX) apod.
Proto jsem hledal funkci, která zjistí v daném sloupci (poli) nejdelší text. Celý vzoreček se skládá z několika funkcí:
- LEN / DÉLKA - vrátí délku daného textu, v našem případě ale nejde o jednoduchý text, ale o celou oblast; výsledkem je tudíž sada hodnot
- MAX - vrátí největší hodnotu, což v našem případě vrátí největší délku textu ze zadané sady
- MATCH / POZVYHLEDAT - vrátí relativní pozici (v rámci oblasti) hledaného textu, v našem případě toho nejdelšího textu
- INDEX - vrátí hodnotu z dané oblasti na zadané relativní pozici, takže vlastně ten nejdejší text
Anglická verze zobrazující nejdelší text:
=INDEX(range,MATCH(MAX(LEN(range)),LEN(range),0))
A česká verze (s příšernými názvy funkcí, ale také se středníky místo čárek) zobrazující délku nejdelšího nalezeného textu:
=DÉLKA(INDEX(C2:C1000;POZVYHLEDAT(MAX(DÉLKA(C2:C1000));DÉLKA(C2:C1000);0)))
Pokud vám jde jen o délku, pak si můžete předchozí vzoreček velmi zjednodušit, protože ta největší délka se používá již uvnitř:
=MAX(DÉLKA(C2:C1000))
Za zmínku ještě stojí fakt, že pokud hledáte třeba ten nejdelší text, tak se vrátí první nalezený.
Zdroje: