IVF

Chasing Dreams

Funkce řetězce Impala

  • všechny funkce, které přijímají argumenty STRING, také přijímají typy VARCHAR a CHAR zavedené v Impala 2.0.
  • kdykoli jsou hodnoty VARCHAR nebo CHAR předány funkci, která vrací hodnotu řetězce, je typ návratu normalizován na STRING. Například volání na concat() se směsí argumentů STRING, VARCHAR a CHAR vytvoří výsledek STRING.

odkaz na funkci:

Impala podporuje následující řetězcové funkce:

  • ASCII
  • BASE64DECODE
  • BASE64ENCODE
  • BTRIM
  • CHAR_LENGTH
  • CHR
  • CONCAT
  • CONCAT_WS
  • FIND_IN_SET
  • GROUP_CONCAT
  • INITCAP
  • INSTR
  • JARO_DISTANCE, JARO_DIST
  • JARO_SIMILARITY, JARO_SIM
  • JARO_WINKER_DISTANCE, JW_DST
  • JARO_WINKER_DISTANCE, JW_DST
  • JARO_WINKER_SIMILARITY, JW_SIM
  • LEFT
  • LENGTH
  • LEVENSHTEIN, LE_DST
  • LOCATE
  • LOWER, LTRI
  • LPAD
  • LTRI
  • PARSE_URL
  • REGEXP_ESCAPE
  • REGEXP_EXTRACT
  • REGEXP_LIKE
  • REGEXP_REPLACE
  • REPEAT
  • repeat
  • repeat
  • repeat
  • REVERSE
  • RIGHT
  • RTRIM
  • mezera
  • SPLIT_PART
  • STRLEFT
  • STRRIGHT
  • SUBSTR, substring
  • translate
  • trim
  • Upper, UCASE

ASCII(string str) účel: Vrátí číselný ASCII kód prvního znaku argumentu.

typ návratu: INT

BASE64DECODE (STRING str) účel:

typ návratu: STRING

Poznámky k použití:

funkce BASE64ENCODE() a BASE64DECODE() se obvykle používají v kombinaci pro ukládání dat v tabulce Impala, která je problematické ukládat nebo přenášet. Tyto funkce můžete například použít k ukládání dat řetězců, která používají jiné kódování než UTF-8, nebo k transformaci hodnot v kontextech, které vyžadují hodnoty ASCII, například pro sloupce klíčů oddílů. Mějte na paměti, že hodnoty kódované base64 poskytují různé výsledky pro řetězcové funkce, jako jsou LENGTH(), MAX() a MIN(), než když jsou tyto funkce volány s nekódovanými hodnotami řetězců.

všechny návratové hodnoty produkované BASE64ENCODE() jsou násobkem délky 4 bajtů. Všechny hodnoty argumentů dodané na BASE64DECODE() musí být také násobkem délky 4 bajtů. Pokud by hodnota kódovaná base64 jinak měla jinou délku, může být vyplněna koncovými znaky =, aby dosáhla délky, která je násobkem 4 bajtů.

pokud řetězec argumentů na BASE64DECODE() nepředstavuje platnou hodnotu kódovanou base64, s výhradou omezení implementace Impala, jako je povolená znaková sada, funkce vrátí NULL.

příklady:

BASE64ENCODE (STRING str) účel:

typ návratu: STRING

Poznámky k použití:

funkce BASE64ENCODE() a BASE64DECODE() se obvykle používají v kombinaci pro ukládání dat v tabulce Impala, která je problematické ukládat nebo přenášet. Tyto funkce můžete například použít k ukládání dat řetězců, která používají jiné kódování než UTF-8, nebo k transformaci hodnot v kontextech, které vyžadují hodnoty ASCII, například pro sloupce klíčů oddílů. Mějte na paměti, že hodnoty kódované base64 poskytují různé výsledky pro řetězcové funkce, jako jsou LENGTH(), MAX() a MIN(), než když jsou tyto funkce volány s nekódovanými hodnotami řetězců.

všechny návratové hodnoty produkované BASE64ENCODE() jsou násobkem délky 4 bajtů. Všechny hodnoty argumentů dodané na BASE64DECODE() musí být také násobkem délky 4 bajtů. Pokud by hodnota kódovaná base64 jinak měla jinou délku, může být vyplněna koncovými znaky =, aby dosáhla délky, která je násobkem 4 bajtů.

příklady:

BTRIM(STRING a), BTRIM (STRING a, STRING chars_to_trim) účel: odstraní všechny instance jednoho nebo více znaků ze začátku a konce hodnotySTRING. Ve výchozím nastavení odstraňuje pouze mezery. Pokud je zadán volitelný druhý argument, který neníNULL, funkce odstraní všechny výskyty znaků v tomto druhém argumentu od začátku a konce řetězce.

typ návratu: STRING

příklady:

následující příklady ukazují výchozí chování btrim() a co se změní, když zadáte volitelný druhý argument. Všechny příklady obsahují výstupní hodnotu , takže ve výsledku btrim() můžete vidět jakékoli přední nebo koncové mezery. Ve výchozím nastavení funkce odstraní a počet předních i koncových mezer. Když je zadán druhý argument, libovolný počet výskytů libovolného znaku ve druhém argumentu je odstraněn ze začátku a konce vstupního řetězce; v tomto případě se mezery neodstraní (pokud nejsou součástí druhého argumentu) a žádné instance znaků se neodstraní, pokud se nedostanou přímo na začátek nebo konec řetězce.

CHAR_LENGTH(STRING a), CHARACTER_LENGTH(STRING a) účel: vrátí délku znaků řetězce argumentů. Aliasy pro funkcilength().

typ návratu: INT

CHR (int character_code) účel: vrátí znak určený hodnotou desetinného kódového bodu. Interpretace a zobrazení výsledného znaku závisí na národním prostředí vašeho systému. Protože důsledné zpracování hodnot řetězce Impala je zaručeno pouze pro hodnoty v rozsahu ASCII, použijte tuto funkci pouze pro hodnoty odpovídající znakům ASCII. Zejména hodnoty parametrů větší než 255 vracejí prázdný řetězec.

typ návratu: STRING

Poznámky k použití: lze použít jako inverzní funkci ascii(), která převádí znak na číselný kód ASCII.

příklady:

SELECT chr(65);+---------+| chr(65) |+---------+| A |+---------+SELECT chr(97);+---------+| chr(97) |+---------+| a |+---------+

CONCAT (řetězec a, řetězec b…) Účel: vrátí jeden řetězec představující všechny hodnoty argumentů spojené dohromady.

pokud je nějaký argument NULL, funkce vrátí NULL.

typ návratu: STRING

Poznámky k použití: concat() a concat_ws() jsou vhodné pro zřetězení hodnot více sloupců ve stejném řádku, zatímco group_concat() spojuje hodnoty z různých řádků.

CONCAT_WS (STRING sep, STRING A, STRING b…) Účel: vrátí jeden řetězec představující druhou a následující hodnotu argumentu spojenou dohromady, ohraničenou určeným oddělovačem.

pokud je nějaký argument NULL, funkce vrátí NULL.

typ návratu: STRING

poznámky k použití: concat() a concat_ws() jsou vhodné pro zřetězení hodnot více sloupců ve stejném řádku, zatímco group_concat() spojuje hodnoty z různých řádků.

FIND_IN_SET(STRING str, STRING strList) účel: vrátí pozici (začínající od 1) prvního výskytu zadaného řetězce v řetězci odděleném čárkami. VracíNULL, pokud je některý z argumentůNULL, 0, pokud vyhledávací řetězec nebyl nalezen, nebo 0, pokud vyhledávací řetězec obsahuje čárku.

typ návratu: INT

GROUP_CONCAT (STRING s ) Účel: Vrací jeden řetězec představující hodnotu argumentu spojenou dohromady pro každý řádek sady výsledků. Pokud je zadán volitelný oddělovací řetězec, separátor se přidá mezi každou dvojici zřetězených hodnot.

typ návratu: STRING

Poznámky k použití: concat() a concat_ws() jsou vhodné pro zřetězení hodnot více sloupců ve stejném řádku, zatímco group_concat() spojuje hodnoty z různých řádků.

ve výchozím nastavení vrátí jeden řetězec pokrývající celou sadu výsledků. Chcete-li do sady výsledků zahrnout další sloupce nebo hodnoty nebo vytvořit více zřetězených řetězců pro podmnožiny řádků, zahrňte do dotazu klauzuli GROUP BY.

přesně řečeno, group_concat() je souhrnná funkce, nikoli skalární funkce jako ostatní v tomto seznamu. Další podrobnosti a příklady viz funkce GROUP_CONCAT.

Initcap (STRING str) účel: vrátí vstupní řetězec s prvním písmenem každého slova s velkými písmeny a všemi ostatními písmeny malými písmeny.

typ návratu: STRING

příklad:

INITCAP("i gOt mY ChiCkeNs in tHe yard.") vrací "I Got My Chickens In The Yard.".

INSTR(STRING str, STRING substr ]) účel: vrátí pozici (začínající od 1) prvního výskytu podřetězce v delším řetězci.

typ návratu: INT

Poznámky k použití:

pokud substr není v str přítomen, funkce vrátí 0.

volitelný třetí a čtvrtý argument vám umožní najít instance substr jiné než první instance začínající zleva.

JARO_DISTANCE(STRING str1, STRING str2) JARO_DST(STRING str1, STRING str2) účel: vrátí vzdálenost jara mezi dvěma vstupními řetězci. Vzdálenost jara je měřítkem podobnosti mezi dvěma řetězci a je komplementárníJARO_SIMILARITY(), tj. (1 –JARO_SIMILARITY()).

typ návratu: DOUBLE

Poznámky k použití:

pokud jsou dva vstupní řetězce identické, funkce vrátí 0.0.

pokud mezi vstupními řetězci není odpovídající znak, funkce vrátí 1.0.

pokud je některý ze vstupních řetězců NULL, funkce vrátí NULL.

pokud je délka kteréhokoli vstupního řetězce větší než 255 znaků, funkce vrátí chybu.

JARO_SIMILARITY(STRING str1, STRING str2) JARO_SIM(STRING str1, STRING str2) účel: vrátí Jaro podobnost dvou řetězců. Čím vyšší je podobnost jara pro dva řetězce, tím více jsou řetězce podobné.

typ návratu: DOUBLE

Poznámky k použití:

pokud jsou dva vstupní řetězce identické, funkce vrátí 1.0.

pokud mezi vstupními řetězci není odpovídající znak, funkce vrátí 0.0.

pokud je některý ze vstupních řetězců NULL, funkce vrátí NULL.

pokud je délka kteréhokoli vstupního řetězce větší než 255 znaků, funkce vrátí chybu.

JARO_WINKLER_DISTANCE(STRING str1, STRING str2) JW_DST(STRING str1, STRING str2) účel: vrátí vzdálenost jara-Winkler dvou vstupních řetězců. Je komplementárníJARO_WINKLER_SIMILARITY(), tj. 1 –JARO_WINKLER_SIMILARITY().

typ návratu: DOUBLE

Poznámky k použití:

pokud jsou dva vstupní řetězce identické, funkce vrátí 0.0.

pokud mezi vstupními řetězci není odpovídající znak, funkce vrátí 1.0.

funkce vrací chybu v následujících případech:

  • délka obou vstupních řetězců je větší než 255 znaků.
  • scaling_factor < 0.0 nebo scaling_factor > 0.25
  • boost_threshold < 0.0 nebo boost_threshold > 1.0

pokud je některý ze vstupních řetězců NULL, funkce vrátí NULL.

výchozí měřítko je 0,1.

hmotnost předpony se použije pouze v případě, že vzdálenost Jaro překročí volitelnou hodnotu boost_threshold. Ve výchozím nastavení je hodnota boost_threshold 0,7.

JARO_WINKLER_SIMILARITY(STRING str1, STRING str2) JARO_SIM(STRING str1, STRING str2) účel: vrátí Jaro-Winklerovu podobnost mezi dvěma vstupními řetězci. Podobnost Jaro-Winkler používá hmotnost předpony, specifikované faktorem škálování, což dává příznivější hodnocení řetězcům, které se od začátku shodují s nastavenou délkou předpony, až do maximálně čtyř znaků.

použijte funkce Jaro nebo Jaro-Winkler k provádění fuzzy shod na relativně krátkých řetězcích, např. k čištění uživatelských vstupů jmen proti záznamům v databázi.

typ návratu: DOUBLE

Poznámky k použití:

pokud jsou dva vstupní řetězce identické, funkce vrátí 1.0.

pokud mezi vstupními řetězci není odpovídající znak, funkce vrátí 0.0.

funkce vrací chybu v následujících případech:

  • délka obou vstupních řetězců je větší než 255 znaků.
  • scaling_factor < 0.0 nebo scaling_factor > 0.25
  • boost_threshold < 0.0 nebo boost_threshold > 1.0

pokud je některý ze vstupních řetězců NULL, funkce vrátí NULL.

výchozí měřítko je 0,1.

hmotnost předpony se použije pouze v případě, že podobnost Jaro překročí volitelný boost_threshold. Ve výchozím nastavení je hodnota boost_threshold 0,7.

vlevo (řetězec A, INT num_chars) viz funkciSTRLEFT(). Délka (řetězec a) účel: vrací délku v znacích řetězce argumentů.

typ návratu: INT

LEVENSHTEIN(STRING str1, STRING str2), LE_DST(STRING str1, STRING str2) účel: vrátí Levenshtein vzdálenost mezi dvěma vstupními řetězci. Levenshteinova vzdálenost mezi dvěma řetězci je minimální počet jednoznakových úprav potřebných k transformaci jednoho řetězce na druhý. Funkce označuje, jak odlišné jsou vstupní řetězce.

typ návratu: INT

Poznámky k použití:

pokud jsou vstupní řetězce stejné, funkce vrátí 0.

pokud některý vstup překročí 255 znaků, funkce vrátí chybu.

pokud je některý vstupní řetězec NULL, funkce vrátí NULL.

pokud je délka jednoho vstupního řetězce nulová, funkce vrátí délku druhého řetězce.

příklad:

LEVENSHTEIN ('welcome', 'We come') vrátí 2, nejprve změnit nahradit ‚w ‚ na ‚ W‚, a pak nahradit ‚l ‚ na znak mezery.

LOCATE(STRING substr, STRING str) účel: vrátí pozici (začínající od 1) prvního výskytu podřetězce v delším řetězci, případně po určité pozici.

typ návratu: INT

dolní (řetězec a), LCASE (řetězec a) účel: vrátí řetězec argumentu převedený na všechna malá písmena.

typ návratu: STRING

Poznámky k použití:

v Impala 2.5 a vyšší, můžete zjednodušit dotazy, které používají mnoho volání UPPER() a LOWER() k provádění srovnání necitlivých na velká a malá písmena, pomocí operátorů ILIKE nebo IREGEXP.

Lpad (STRING str, INT len, STRING pad) účel: vrátí řetězec zadané délky na základě prvního řetězce argumentů. Pokud je zadaný řetězec příliš krátký, je vlevo vyplněn opakujícím se sledem znaků z řetězce podložky. Pokud je zadaný řetězec příliš dlouhý, je zkrácen vpravo.

typ návratu: STRING

LTRIM (řetězec a ) účel: Vrátí řetězec argumentů se všemi výskyty znaků určených druhým argumentem odstraněnými z levé strany. Odstraní mezery, pokud není zadán druhý argument.

typ návratu: STRING

PARSE_URL (STRING urlString, STRING partToExtract ) účel: Vrátí část adresy URL odpovídající zadané části. Část argument může být'PROTOCOL','HOST','PATH','REF','AUTHORITY','FILE','USERINFO', nebo'QUERY'. Pro tyto doslovné hodnoty je vyžadováno velké písmeno. Při požadavku naQUERYčást adresy URL můžete volitelně zadat klíč pro načtení pouze přidružené hodnoty z párů klíč-hodnota v řetězci dotazu.

typ návratu: STRING

Poznámky k použití: Tato funkce je důležitá pro tradiční případ použití Hadoop při interpretaci webových protokolů. Pokud například data webového provozu obsahují nezpracované adresy URL, které nejsou rozděleny do samostatných sloupců tabulky, můžete počítat návštěvníky konkrétní stránky rozbalením pole 'PATH' nebo 'FILE' nebo analyzovat hledané výrazy extrahováním odpovídajícího klíče z pole 'QUERY'.

REGEXP_ESCAPE (STRING source) účel: funkceREGEXP_ESCAPEvrací řetězec uniklý pro speciální znak v knihovně RE2, takže speciální znaky jsou interpretovány spíše doslovně než jako speciální znaky. Následující speciální znaky jsou escapovány funkcí:

.\+*?$(){}=!<>|:-

typ návratu: string

v Impala 2.0 a novější, Impala regulární výraz syntaxe odpovídá POSIX rozšířené regulární výraz syntaxe používané knihovny Google RE2. Podrobnosti naleznete v dokumentaci RE2. Má většinu idiomů známých z regulárních výrazů v Perlu, Pythonu atd., včetně .*? pro nenažrané zápasy.

v Impala 2.0 a novějších by změna v základní knihovně regulárních výrazů mohla způsobit změny ve způsobu interpretace regulárních výrazů touto funkcí. Otestujte všechny dotazy, které používají regulární výrazy, a v případě potřeby upravte vzorce výrazů.

protože tlumočník impala-shell používá pro escapování znak \, použijte \ k reprezentaci regulárního výrazu escape v jakýchkoli regulárních výrazech, které odešlete prostřednictvím impala-shellu . Můžete raději použít ekvivalentní názvy tříd znaků, například ] místo \d, které byste museli uniknout jako \d.

příklady:

tento příklad ukazuje únik jednoho ze speciálních znaků v RE2.

+------------------------------------------------------+| regexp_escape('Hello.world') |+------------------------------------------------------+| Hello\.world |+------------------------------------------------------+

tento příklad ukazuje únik všech speciálních znaků v RE2.

+------------------------------------------------------------+| regexp_escape('a.b\c+d*e?fh$i(j)k{l}m=n!o<p>q|r:s-t') |+------------------------------------------------------------+| a\.b\c\+d\*e\?f\h$i\(j\)k\{l\}m\=n\!o\<p\>q\|r\:s\-t |+------------------------------------------------------------+

REGEXP_EXTRACT (předmět řetězce, vzor řetězce, index INT) účel: vrátí zadanou skupinu () z řetězce založeného na vzoru regulárního výrazu. Skupina 0 označuje celý extrahovaný řetězec, zatímco skupina 1, 2 a tak dále odkazuje na první, druhou a tak dále(...)část.

typ návratu: STRING

v Impala 2.0 a novější, Impala regulární výraz syntaxe odpovídá POSIX rozšířené regulární výraz syntaxe používané knihovny Google RE2. Podrobnosti naleznete v dokumentaci RE2. Má většinu idiomů známých z regulárních výrazů v Perlu, Pythonu atd., včetně .*? pro nenažrané zápasy.

v Impala 2.0 a novějších by změna v základní knihovně regulárních výrazů mohla způsobit změny ve způsobu interpretace regulárních výrazů touto funkcí. Otestujte všechny dotazy, které používají regulární výrazy, a v případě potřeby upravte vzorce výrazů.

protože tlumočník impala-shell používá pro escapování znak \, použijte \ k reprezentaci regulárního výrazu escape v jakýchkoli regulárních výrazech, které odešlete prostřednictvím impala-shellu . Můžete raději použít ekvivalentní názvy tříd znaků, například ] místo \d, které byste museli uniknout jako \d.

příklady:

tento příklad ukazuje, jak skupina 0 odpovídá úplnému řetězci vzoru, včetně části mimo jakoukoli skupinu () :

tento příklad ukazuje, jak skupina 1 odpovídá pouze obsahu uvnitř první skupiny () v řetězci vzorů:

na rozdíl od dřívějších vydání impaly knihovna regulárních výrazů používaná v Impala 2.0 a později podporuje idiom .*? pro nenažrané zápasy. Tento příklad ukazuje, jak řetězec vzoru začínající .*? odpovídá nejkratší možné části zdrojového řetězce a vrací sadu malých písmen úplně vpravo. Řetězec vzoru začínající i končící .*? najde dvě potenciální shody stejné délky a vrátí první nalezenou (nejvíce vlevo množinu malých písmen).

REGEXP_LIKE (STRING source, STRING pattern) účel: vracítruenebofalsea označuje, zda zdrojový řetězec obsahuje kdekoli uvnitř regulární výraz daný vzorem. Volitelný třetí argument se skládá z příznaků písmen, které mění způsob provádění shody, napříkladipro shodu necitlivou na velká a malá písmena.

syntaxe:

příznaky, které můžete zahrnout do volitelného třetího argumentu, jsou:

  • c: odpovídající velká a malá písmena (výchozí).
  • i: shoda necitlivá na velká a malá písmena. Pokud je ve třetím argumentu zahrnuto více instancí c a i, má přednost poslední taková volba.
  • m: víceřádkové párování. Operátory ^ a $ odpovídají začátku nebo konci libovolného řádku ve zdrojovém řetězci, nikoli začátku a konci celého řetězce.
  • n: nová shoda. Operátor . může odpovídat znaku nového řádku. Operátor opakování, jako je .* , může odpovídat části zdrojového řetězce, která pokrývá více řádků.

typ návratu: BOOLEAN

v Impala 2.0 a novější, Impala regulární výraz syntaxe odpovídá POSIX rozšířené regulární výraz syntaxe používané knihovny Google RE2. Podrobnosti naleznete v dokumentaci RE2. Má většinu idiomů známých z regulárních výrazů v Perlu, Pythonu atd., včetně .*? pro nenažrané zápasy.

V Impale 2.0 a později by změna v základní knihovně regulárních výrazů mohla způsobit změny ve způsobu interpretace regulárních výrazů touto funkcí. Otestujte všechny dotazy, které používají regulární výrazy, a v případě potřeby upravte vzorce výrazů.

protože tlumočník impala-shell používá pro escapování znak \, použijte \ k reprezentaci regulárního výrazu escape v jakýchkoli regulárních výrazech, které odešlete prostřednictvím impala-shellu . Můžete raději použít ekvivalentní názvy tříd znaků, například ] místo \d, které byste museli uniknout jako \d.

příklady:

tento příklad ukazuje, jak REGEXP_LIKE() může testovat existenci různých druhů vzorů regulárních výrazů ve zdrojovém řetězci:

REGEXP_REPLACE (STRING initial, STRING pattern, STRING replacement) účel: vrátí počáteční argument se vzorem regulárního výrazu nahrazeným konečným řetězcem argumentu.

typ návratu: STRING

v Impale 2.0 a později syntaxe regulárního výrazu Impala odpovídá syntaxi rozšířeného regulárního výrazu POSIX používané knihovnou Google RE2. Podrobnosti naleznete v dokumentaci RE2. Má většinu idiomů známých z regulárních výrazů v Perlu, Pythonu atd., včetně .*? pro nenažrané zápasy.

v Impala 2.0 a novějších by změna v základní knihovně regulárních výrazů mohla způsobit změny ve způsobu interpretace regulárních výrazů touto funkcí. Otestujte všechny dotazy, které používají regulární výrazy, a v případě potřeby upravte vzorce výrazů.

protože tlumočník impala-shell používá pro escapování znak \, použijte \ k reprezentaci regulárního výrazu escape v jakýchkoli regulárních výrazech, které odešlete prostřednictvím impala-shellu . Můžete raději použít ekvivalentní názvy tříd znaků, například ] místo \d, které byste museli uniknout jako \d.

příklady:

tyto příklady ukazují, jak můžete nahradit části řetězce odpovídající vzoru náhradním textem, který může zahrnovat zpětné odkazy na libovolné skupiny () v řetězci vzoru. Čísla backreference začínají na 1 a všechny znaky \ musí být escapovány jako \.

nahraďte znakový vzor novým textem:

 > select regexp_replace('aaabbbaaa','b+','xyz');+------------------------------------------+| regexp_replace('aaabbbaaa', 'b+', 'xyz') |+------------------------------------------+| aaaxyzaaa |+------------------------------------------+Returned 1 row(s) in 0.11s

nahraďte znakový vzor substitučním textem, který obsahuje původní odpovídající text:

 > select regexp_replace('aaabbbaaa','(b+)','<\1>');+----------------------------------------------+| regexp_replace('aaabbbaaa', '(b+)', '<\1>') |+----------------------------------------------+| aaa<bbb>aaa |+----------------------------------------------+Returned 1 row(s) in 0.11s

odstranit všechny znaky, které nejsou číslicemi:

REPEAT (STRING str, INT n) účel: vrátí řetězec argumentu opakovaný zadaný počet opakování.

typ návratu: STRING

nahradit (počáteční řetězec, cílový řetězec, náhrada řetězce) účel: Vrátí počáteční argument se všemi výskyty cílového řetězce nahrazeného náhradním řetězcem.

typ návratu: STRING

poznámky k použití:

protože tato funkce nepoužívá žádné vzory regulárních výrazů, je obvykle rychlejší než REGEXP_REPLACE() pro jednoduché substituce řetězců.

pokud je nějaký argument NULL, vrátí se hodnota NULL.

shoda je malá a velká písmena.

pokud náhradní řetězec obsahuje jinou instanci cílového řetězce, rozšíření se provede pouze jednou, místo aby se znovu použilo na nově vytvořený řetězec.

příklady:

reverzní (řetězec a) účel: vrátí řetězec argumentu se znaky v obráceném pořadí.

typ návratu: STRING

vpravo (řetězec A, INT num_chars) viz funkciSTRRIGHT. RPAD (STRING str, INT len, STRING pad) účel: vrátí řetězec zadané délky na základě prvního řetězce argumentu. Pokud je zadaný řetězec příliš krátký, je vyplněn vpravo opakujícím se sledem znaků z řetězce podložky. Pokud je zadaný řetězec příliš dlouhý, je zkrácen vpravo.

typ návratu: STRING

Rtrim (STRING a ) účel: vrátí řetězec argumentu se všemi výskyty znaků určených druhým argumentem odstraněnými z pravé strany. Odstraní mezery, pokud není zadán druhý argument.

typ návratu: STRING

SPACE (INT n) účel: vrátí zřetězený řetězec zadaného počtu mezer. Zkratka prorepeat(' ',n).

typ návratu: STRING

SPLIT_PART (STRING source, STRING delimiter, BIGINT index) účel: vrátí požadovanouindexčást řetězce vstupního zdroje rozdělenou oddělovačem.

  • pokud je index kladné číslo, vrátí indexth část zleva v rámci zdrojového řetězce.
  • pokud je index záporné číslo, vrátí indexth část zprava ve zdrojovém řetězci.
  • pokud je index 0, vrátí chybu.

oddělovač se může skládat z více znaků, nikoli pouze z jednoho znaku.

veškerá shoda oddělovače se provádí přesně, bez použití vzorů regulárních výrazů.

typ návratu: STRING

příklady:

SPLIT_PART('x,y,z',',',2) vrací 'y'.

SPLIT_PART('one***two***three','***',2)vrací 'two'.

SPLIT_PART('[email protected]@[email protected]@ghi', '@@', 3)vrací 'ghi'.

SPLIT_PART('[email protected]@[email protected]@ghi', '@@', -3)vrací 'abc'.

STRLEFT (STRING A, int num_chars) účel: vrací nejvíce vlevo znaky řetězce. Zkratka pro volánísubstr()s 2 argumenty.

typ návratu: STRING

STRRIGHT (STRING a, int num_chars) účel: vrátí nejvíce vpravo znaky řetězce. Zkratka pro volánísubstr()s 2 argumenty.

typ návratu: STRING

SUBSTR (STRING A, int start), podřetězec(STRING A, int start ) účel: Vrátí část řetězce začínající v určeném bodě, případně se zadanou maximální délkou. Znaky v řetězci jsou indexovány od 1.

typ návratu: STRING

přeložit (STRING input, STRING from, STRING to) účel: vrátí řetězecinputs každým znakem v argumentufromnahrazeném odpovídajícím znakem v argumentuto. Znaky jsou porovnány v pořadí, v jakém se objevují vfromato.

například: translate ('hello world','world','earth') vrací 'hetta earth'.

typ návratu: STRING

Poznámky k použití:

pokud from obsahuje více znaků než to, jsou ve výsledku odstraněny znaky from, které přesahují délku to.

například:

translate('abcdedg', 'bcd', '1') vrací 'a1eg'.

translate('Unit Number#2', '# ', '_')vrací 'UnitNumber_2'.

pokud from je NULL, funkce vrátí NULL.

pokud to obsahuje více znaků než from, jsou další znaky v to ignorovány.

pokud from obsahuje duplicitní znaky, je duplicitní znak nahrazen prvním odpovídajícím znakem v to.

například: translate ('hello','ll','67') vrací 'he66o'.

TRIM (STRING a) účel: vrátí vstupní řetězec s odstraněnými předními i koncovými mezerami. Stejně jako průchod řetězce přesLTRIM()aRTRIM().

Poznámky k použití: často se používá během operací čištění dat během cyklu ETL, pokud vstupní hodnoty mohou mít stále okolní prostory. Pro obecnější funkci, která může kromě mezer odstranit i další vedoucí a koncové znaky, viz BTRIM().

typ návratu: STRING

horní (řetězec a), UCASE (řetězec a) účel: vrátí řetězec argumentu převedený na všechna velká písmena.

typ návratu: STRING

Poznámky k použití:

v Impala 2.5 a vyšší, můžete zjednodušit dotazy, které používají mnoho UPPER() a LOWER() volání dělat velká a malá písmena srovnání, pomocí operátorů ILIKE nebo IREGEXP namísto.

Napsat komentář

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