- alle de funktioner, der accepterer
STRING
argumenter, accepterer ogsåVARCHAR
ogCHAR
typerne introduceret i Impala 2.0. - når
VARCHAR
ellerCHAR
værdier overføres til en funktion, der returnerer en strengværdi, normaliseres returtypen tilSTRING
. For eksempel giver et opkald tilconcat()
med en blanding afSTRING
,VARCHAR
ogCHAR
argumenter etSTRING
resultat.
funktion reference:
Impala understøtter følgende strengfunktioner:
- ASCII
- BASE64DECODE
- BASE64ENCODE
- BTRIM
- CHAR_LENGTH
- CHR
- SAMMENKÆDNING
- SAMMENKÆDNING
- SAMMENKÆDNING
- SAMMENKÆDNING
- FIND_IN_SET
- GROUP_CONCAT
- INITCAP
- INSTR
- JARO_DISTANCE, JARO_DISTANCE
- JARO_SIMILARITET, JARO_SIM
- JARO_VINKER_DISTANCE, JV_DST
- JARO_VINKER_SIMILARITET, JV_SIM
- LEFT
- LEVENSHTEIN, LE_DST
- FIND
- LAVERE, LCASE
- LPAD
- LTRI
- PARSE_URL
- REGEKSP_ESCAPE
- REGEKSP_EKSTRAKT
- REGEKSP_LIKE
- gentag
- erstat
- REVERSE
- højre
- RPAD
- RTRIM
- plads
- SPLIT_PART
- STRLEFT
- STRRIGHT
- SUBSTR, substring
- oversæt
- trim
- upper, UCASE
ASCII(string str) formål: returnerer den numeriske ASCII-kode for argumentets første tegn.
returtype: INT
BASE64DECODE (STRING str) formål:
returtype: STRING
Brugsnoter:
funktionerne BASE64ENCODE()
og BASE64DECODE()
bruges typisk i kombination til at gemme i en Impala-tabelstrengdata, der er problematisk at gemme eller transmittere. For eksempel kan du bruge disse funktioner til at gemme strengdata, der bruger en anden kodning end UTF-8, eller til at transformere værdierne i sammenhænge, der kræver ASCII-værdier, f.eks. Husk, at base64-kodede værdier giver forskellige resultater for strengfunktioner som LENGTH()
, MAX()
og MIN()
, end når disse funktioner kaldes med de ukodede strengværdier.
alle returværdier produceret af BASE64ENCODE()
er et multiplum af 4 byte i længden. Alle argumentværdier, der leveres til BASE64DECODE()
, skal også være et multiplum af 4 byte i længden. Hvis en base64-kodet værdi ellers ville have en anden længde, kan den polstres med efterfølgende =
tegn for at nå en længde, der er et multiplum af 4 byte.
hvis argumentstrengen til BASE64DECODE()
ikke repræsenterer en gyldig Base64-kodet værdi, underlagt begrænsningerne i Impala-implementeringen, såsom det tilladte tegnsæt, returnerer funktionen NULL
.
eksempler:
BASE64ENCODE (STRING str) formål:
returtype: STRING
Brugsnoter:
funktionerne BASE64ENCODE()
og BASE64DECODE()
bruges typisk i kombination til at gemme i en Impala-tabelstrengdata, der er problematisk at gemme eller transmittere. For eksempel kan du bruge disse funktioner til at gemme strengdata, der bruger en anden kodning end UTF-8, eller til at transformere værdierne i sammenhænge, der kræver ASCII-værdier, f.eks. Husk, at base64-kodede værdier giver forskellige resultater for strengfunktioner som LENGTH()
, MAX()
og MIN()
, end når disse funktioner kaldes med de ukodede strengværdier.
alle returværdier produceret af BASE64ENCODE()
er et multiplum af 4 byte i længden. Alle argumentværdier, der leveres til BASE64DECODE()
, skal også være et multiplum af 4 byte i længden. Hvis en base64-kodet værdi ellers ville have en anden længde, kan den polstres med efterfølgende =
tegn for at nå en længde, der er et multiplum af 4 byte.
eksempler:
BTRIM(streng a), BTRIM(streng a, streng chars_to_trim) formål: fjerner alle forekomster af et eller flere tegn fra starten og slutningen af enSTRING
værdi. Som standard fjerner kun mellemrum. Hvis et ikke –NULL
valgfrit andet argument er angivet, fjerner funktionen alle forekomster af tegn i det andet argument fra begyndelsen og slutningen af strengen.
returtype: STRING
eksempler:
følgende eksempler viser standard btrim()
opførsel, og hvad der ændres, når du angiver det valgfri andet argument. Alle eksemplerne beslaglægger outputværdien med , så du kan se eventuelle ledende eller efterfølgende mellemrum i resultatet
btrim()
. Som standard fjerner funktionen og antallet af både ledende og efterfølgende mellemrum. Når det andet argument er angivet, fjernes et hvilket som helst antal forekomster af ethvert tegn i det andet argument fra starten og slutningen af inputstrengen; i dette tilfælde fjernes mellemrum ikke (medmindre de er en del af det andet argument), og eventuelle forekomster af tegnene fjernes ikke, hvis de ikke kommer lige i begyndelsen eller slutningen af strengen.
CHAR_LENGTH(streng a), CHARACTER_LENGTH (streng a) formål: returnerer længden i tegn i argumentstrengen. Aliaser for funktionenlength()
.
returtype: INT
CHR(int character_code) formål: Returnerer et tegn angivet med en decimalkodepunktsværdi. Fortolkningen og visningen af den resulterende karakter afhænger af dit system locale. Da konsekvent behandling af Impala-strengværdier kun garanteres for værdier inden for ASCII-området, skal du kun bruge denne funktion til værdier svarende til ASCII-tegn. Især returnerer parameterværdier større end 255 en tom streng.
returtype: STRING
Brugsnoter: kan bruges som den inverse af funktionen ascii()
, som konverterer et tegn til dets numeriske ASCII-kode.
eksempler:
SELECT chr(65);+---------+| chr(65) |+---------+| A |+---------+SELECT chr(97);+---------+| chr(97) |+---------+| a |+---------+
CONCAT(streng a, streng B…) Formål: returnerer en enkelt streng, der repræsenterer alle de argumentværdier, der er sammenføjet.
hvis et argument er NULL
, returnerer funktionen NULL
.
returtype: STRING
bemærkninger til brug: concat()
og concat_ws()
er egnede til sammenkædning af værdierne for flere kolonner i samme række, mens group_concat()
sammenkæder værdier fra forskellige rækker.
sammenkædninger (STRING sep, STRING a, STRING b…) Formål: returnerer en enkelt streng, der repræsenterer den anden og følgende argumentværdier sammenføjet, afgrænset af en specificeret separator.
hvis et argument er NULL
, returnerer funktionen NULL
.
returtype: STRING
brug noter: concat()
og concat_ws()
er egnede til sammenkædning af værdierne for flere kolonner inden for samme række, mens group_concat()
sammenkæder værdier fra forskellige rækker.
FIND_IN_SET(STRING str, STRING strList) formål: returnerer positionen (startende fra 1) for den første forekomst af en specificeret streng inden for en kommasepareret streng. ReturnererNULL
hvis et af argumenterne erNULL
, 0 hvis søgestrengen ikke findes, eller 0 hvis søgestrengen indeholder et komma.
returtype: INT
GROUP_CONCAT (streng s ) formål: Returnerer en enkelt streng, der repræsenterer argumentværdien sammenkædet for hver række i resultatsættet. Hvis den valgfri separatorstreng er angivet, tilføjes separatoren mellem hvert par sammenkædede værdier.
returtype: STRING
bemærkninger til brug: concat()
og concat_ws()
er egnede til sammenkædning af værdierne for flere kolonner i samme række, mens group_concat()
sammenkæder værdier fra forskellige rækker.
returnerer som standard en enkelt streng, der dækker hele resultatsættet. Hvis du vil medtage andre kolonner eller værdier i resultatsættet eller producere flere sammenkædede strenge til undergrupper af rækker, skal du medtage en GROUP BY
– klausul i forespørgslen.
strengt taget er group_concat()
en aggregeringsfunktion, ikke en skalarfunktion som de andre på denne liste. For yderligere detaljer og eksempler, se funktionen GROUP_CONCAT
.
INITCAP(STRING str) formål: returnerer inputstrengen med det første bogstav i hvert ord med store bogstaver og alle andre bogstaver med små bogstaver.
returtype: STRING
eksempel:
INITCAP("i gOt mY ChiCkeNs in tHe yard.")
vender tilbage "I Got My Chickens In The Yard."
.
INSTR (STRING str, STRING substr ]) formål: returnerer positionen (startende fra 1) for den første forekomst af en substring inden for en længere streng.
returtype: INT
bemærkninger til brug:
hvis substr ikke er til stede i str, returnerer funktionen 0.
de valgfri tredje og fjerde argumenter giver dig mulighed for at finde forekomster af substr andet end den første forekomst, der starter fra venstre.
JARO_DISTANCE(streng str1, streng str2) JARO_DST (streng str1, streng str2) formål: returnerer Jaro afstanden mellem to input strenge. Jaro-afstanden er et mål for lighed mellem to strenge og er komplementær tilJARO_SIMILARITY()
, dvs. (1 –JARO_SIMILARITY()
).
returtype: DOUBLE
Brugsnoter:
hvis de to inputstrenge er identiske, returnerer funktionen 0,0.
hvis der ikke er noget matchende tegn mellem inputstrengene, returnerer funktionen 1.0.
hvis en af inputstrengene er NULL
, returnerer funktionen NULL
.
hvis længden af en af inputstrengene er større end 255 tegn, returnerer funktionen en fejl.
JARO_SIMILARITET(streng str1, streng str2) JARO_SIM (streng str1, streng str2) formål: returnerer Jaro-ligheden mellem to strenge. Jo højere Jaro-ligheden for to strenge er, jo mere ens er strengene.
returtype: DOUBLE
Brugsnoter:
hvis de to inputstrenge er identiske, returnerer funktionen 1.0.
hvis der ikke er noget matchende tegn mellem inputstrengene, returnerer funktionen 0,0.
hvis en af inputstrengene er NULL
, returnerer funktionen NULL
.
hvis længden af en af inputstrengene er større end 255 tegn, returnerer funktionen en fejl.
JARO_VINKLER_DISTANCE(streng str1, streng str2) JV_DST (streng str1, streng str2) formål: returnerer Jaro-Vinklerafstanden for to inputstrenge. Det er komplementær afJARO_WINKLER_SIMILARITY()
, dvs. 1 –JARO_WINKLER_SIMILARITY()
.
returtype: DOUBLE
Brugsnoter:
hvis de to inputstrenge er identiske, returnerer funktionen 0,0.
hvis der ikke er noget matchende tegn mellem inputstrengene, returnerer funktionen 1.0.
- længden af en af inputstrengene er større end 255 tegn.
- scaling_factor < 0, 0 eller scaling_factor > 0.25
- boost_threshold < 0.0 eller boost_threshold > 1.0
hvis en af inputstrengene er NULL
, returnerer funktionen NULL
.
standard skaleringsfaktoren er 0,1.
præfiksvægten anvendes kun, hvis Jaro-afstanden overstiger den valgfri boost_threshold. Som standard er boost_threshold-værdien 0,7.
JARO_VINKLER_SIMILARITET(streng str1, streng str2) JARO_SIM (streng str1, streng str2) formål: returnerer Jaro-Vinklers lighed mellem to inputstrenge. Det Jaro-vinkler lighed bruger en præfiksvægt, specificeret af skaleringsfaktor, hvilket giver mere gunstige ratings til strenge, der matcher fra starten for en indstillet præfikslængde, op til maksimalt fire tegn.
brug Jaro eller Jaro-funktioner til at udføre uklare kampe på relativt korte strenge, f.eks.
returtype: DOUBLE
Brugsnotater:
hvis de to inputstrenge er identiske, returnerer funktionen 1.0.
hvis der ikke er noget matchende tegn mellem inputstrengene, returnerer funktionen 0,0.
- længden af en af inputstrengene er større end 255 tegn.
- scaling_factor < 0, 0 eller scaling_factor > 0.25
- boost_threshold < 0.0 eller boost_threshold > 1.0
hvis en af inputstrengene er NULL
, returnerer funktionen NULL
.
standard skaleringsfaktoren er 0,1.
præfiksvægten anvendes kun, hvis Jaro-ligheden overstiger den valgfri boost_threshold. Som standard er boost_threshold-værdien 0,7.
venstre (streng A, int num_chars) se funktionenSTRLEFT()
. Længde (streng a) formål: returnerer længden i tegn i argumentstrengen.
returtype: INT
LEVENSHTEIN(streng str1, streng str2), LE_DST(streng str1, streng str2) formål: returnerer Levenshtein-afstanden mellem to inputstrenge. Levenshtein-afstanden mellem to strenge er det mindste antal redigeringer med et tegn, der kræves for at omdanne en streng til en anden. Funktionen angiver, hvor forskellige inputstrengene er.
returtype: INT
Brugsnotater:
hvis inputstrenge er ens, returnerer funktionen 0.
hvis et input overstiger 255 tegn, returnerer funktionen en fejl.
hvis en af inputstrengene er NULL
, returnerer funktionen NULL
.
hvis længden af en inputstreng er nul, returnerer funktionen længden af den anden streng.
eksempel:
LEVENSHTEIN ('welcome', 'We come')
returnerer 2, Første ændring for at erstatte ‘w
‘ til ‘W
‘ og derefter erstatte ‘l
‘ til et mellemrum.
find (STRING substr, STRING str) formål: returnerer positionen (startende fra 1) for den første forekomst af en substring inden for en længere streng, eventuelt efter en bestemt position.
returtype: INT
lavere(streng a), LCASE(streng a) formål: returnerer argumentstrengen konverteret til små bogstaver.
returtype: STRING
brug noter:
i Impala 2.5 og højere kan du forenkle forespørgsler, der bruger mange UPPER()
og LOWER()
opkald til at foretage store og små bogstaver ved at bruge operatorerne ILIKE
eller IREGEXP
i stedet.
LPAD(STRING str, INT len, STRING pad) formål: returnerer en streng af en bestemt længde, baseret på den første argumentstreng. Hvis den angivne streng er for kort, er den polstret til venstre med en gentagende sekvens af tegnene fra padstrengen. Hvis den angivne streng er for lang, afkortes den til højre.
returtype: STRING
LTRIM (streng a ) formål: Returnerer argumentstrengen med alle forekomster af tegn angivet af det andet argument fjernet fra venstre side. Fjerner mellemrum, hvis det andet argument ikke er angivet.
returtype: STRING
PARSE_URL(STRING urlString, STRING parttoekstract ) formål: Returnerer den del af en URL, der svarer til en bestemt del. Delargumentet kan være'PROTOCOL'
,'HOST'
,'PATH'
,'REF'
,'AUTHORITY'
,'FILE'
,'USERINFO'
, eller'QUERY'
. Store bogstaver er påkrævet for disse bogstavelige værdier. Når du anmoder omQUERY
– delen af URL ‘ en, kan du eventuelt angive en nøgle for kun at hente den tilknyttede værdi fra nøgleværdiparrene i forespørgselsstrengen.
returtype: STRING
Brugsnotater: denne funktion er vigtig for den traditionelle Hadoop-brugssag til fortolkning af internetlogfiler. Hvis trafikdataene f.eks. indeholder rå URL ‘ er, der ikke er opdelt i separate tabelkolonner, kan du tælle besøgende på en bestemt side ved at udpakke feltet 'PATH'
eller 'FILE'
eller analysere søgetermer ved at udpakke den tilsvarende nøgle fra feltet 'QUERY'
.
REGEKSP_ESCAPE(STRENGKILDE) formål: funktionenREGEXP_ESCAPE
returnerer en streng, der er undsluppet for specialtegnet i RE2-biblioteket, så specialtegnene fortolkes bogstaveligt snarere end som specialtegn. Følgende specialtegn undslap af funktionen:
.\+*?$(){}=!<>|:-
returtype: string
i Impala 2.0 og nyere er syntaksen for Impala regulært udtryk i overensstemmelse med syntaksen for udvidet Regulært udtryk, der bruges af Google RE2-biblioteket. For detaljer, se RE2 dokumentation. Det har de fleste idiomer kendt fra regulære udtryk i Perl, Python og så videre, herunder .*?
for ikke-grådige kampe.
i Impala 2.0 og nyere kan en ændring i det underliggende regulære udtryksbibliotek medføre ændringer i den måde, regulære udtryk fortolkes af denne funktion. Test eventuelle forespørgsler, der bruger regulære udtryk, og juster om nødvendigt udtryksmønstrene.
da Impala-shell-tolken bruger tegnet \
til at undslippe, skal du bruge \
til at repræsentere det regulære udtryk escape-tegn i alle regulære udtryk, du sender gennem impala-shell . Du foretrækker måske at bruge de tilsvarende tegnklassenavne, såsom ]
i stedet for \d
, som du bliver nødt til at undslippe som \d
.
eksempler:
dette eksempel viser undslippe en af specialtegn i RE2.
+------------------------------------------------------+| regexp_escape('Hello.world') |+------------------------------------------------------+| Hello\.world |+------------------------------------------------------+
dette eksempel viser undslippe alle specialtegn i 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 |+------------------------------------------------------------+
REGEKS(STRENGEMNE, STRENGMØNSTER, int-indeks) formål: Returnerer den angivne () gruppe fra en streng baseret på et regulært udtryksmønster. Gruppe 0 henviser til hele den ekstraherede streng, mens gruppe 1, 2 og så videre henviser til den første, anden og så videre(...)
del.
returtype: STRING
i Impala 2.0 og nyere er syntaksen for Impala regulært udtryk i overensstemmelse med syntaksen for udvidet Regulært udtryk, der bruges af Google RE2-biblioteket. For detaljer, se RE2 dokumentation. Det har de fleste idiomer kendt fra regulære udtryk i Perl, Python og så videre, herunder .*?
for ikke-grådige kampe.
i Impala 2.0 og nyere kan en ændring i det underliggende regulære udtryksbibliotek medføre ændringer i den måde, regulære udtryk fortolkes af denne funktion. Test eventuelle forespørgsler, der bruger regulære udtryk, og juster om nødvendigt udtryksmønstrene.
da Impala-shell-tolken bruger tegnet \
til at undslippe, skal du bruge \
til at repræsentere det regulære udtryk escape-tegn i alle regulære udtryk, du sender gennem impala-shell . Du foretrækker måske at bruge de tilsvarende tegnklassenavne, såsom ]
i stedet for \d
, som du bliver nødt til at undslippe som \d
.
eksempler:
dette eksempel viser, hvordan gruppe 0 matcher den fulde mønsterstreng, inklusive delen uden for enhver ()
gruppe:
dette eksempel viser, hvordan gruppe 1 kun matcher indholdet i den første ()
gruppe i mønsterstrengen:
i modsætning til tidligere Impala-udgivelser understøtter det regulære udtryksbibliotek, der bruges i Impala 2.0 og senere, .*?
idiomet til ikke-grådige kampe. Dette eksempel viser, hvordan en mønsterstreng, der starter med .*?
, matcher den kortest mulige del af kildestrengen og returnerer det højeste sæt små bogstaver. En mønsterstreng, der både starter og slutter med .*?
, finder to potentielle kampe af samme længde og returnerer den første fundne (det venstre sæt med små bogstaver).
REGEKSP_LIKE(STRING source, STRING pattern) formål: returnerertrue
ellerfalse
for at angive, om kildestrengen indeholder et vilkårligt sted inde i det regulære udtryk givet af mønsteret. Det valgfri tredje argument består af bogstavflag, der ændrer, hvordan kampen udføres, såsomi
for store og små bogstaver.
syntaks:
de flag, du kan medtage i det valgfri tredje argument, er:
-
c
: store og små bogstaver (standard). -
i
: Case-ufølsom matching. Hvis flere forekomster afc
ogi
er inkluderet i det tredje argument, har den sidste sådan mulighed forrang. -
m
: multi-line matching. Operatorerne^
og$
matcher starten eller slutningen af en hvilken som helst linje i kildestrengen, ikke starten og slutningen af hele strengen. -
n
: ny linje matching. Operatoren.
kan matche det nye linjetegn. En gentagelsesoperator som.*
kan matche en del af kildestrengen, der spænder over flere linjer.
returtype: BOOLEAN
i Impala 2.0 og nyere er syntaksen for Impala regulært udtryk i overensstemmelse med syntaksen for udvidet Regulært udtryk, der bruges af Google RE2-biblioteket. For detaljer, se RE2 dokumentation. Det har de fleste idiomer kendt fra regulære udtryk i Perl, Python og så videre, herunder .*?
for ikke-grådige kampe.
I Impala 2.0 og senere kan en ændring i det underliggende regulære udtryksbibliotek medføre ændringer i den måde, regulære udtryk fortolkes af denne funktion. Test eventuelle forespørgsler, der bruger regulære udtryk, og juster om nødvendigt udtryksmønstrene.
da Impala-shell-tolken bruger tegnet \
til at undslippe, skal du bruge \
til at repræsentere det regulære udtryk escape-tegn i alle regulære udtryk, du sender gennem impala-shell . Du foretrækker måske at bruge de tilsvarende tegnklassenavne, såsom ]
i stedet for \d
, som du bliver nødt til at undslippe som \d
.
eksempler:
dette eksempel viser, hvordan REGEXP_LIKE()
kan teste for eksistensen af forskellige former for regulære udtryksmønstre inden for en kildestreng:
REGEKSPLACE(streng initial, streng mønster, streng udskiftning) formål: returnerer det oprindelige argument med det regulære udtryk mønster erstattet af den endelige argumentstreng.
returtype: STRING
i Impala 2.0 og senere er syntaksen for Impalas regulære udtryk i overensstemmelse med syntaksen for udvidet Regulært udtryk, der bruges af Google RE2-biblioteket. For detaljer, se RE2 dokumentation. Det har de fleste idiomer kendt fra regulære udtryk i Perl, Python og så videre, herunder .*?
for ikke-grådige kampe.
i Impala 2.0 og nyere kan en ændring i det underliggende regulære udtryksbibliotek medføre ændringer i den måde, regulære udtryk fortolkes af denne funktion. Test eventuelle forespørgsler, der bruger regulære udtryk, og juster om nødvendigt udtryksmønstrene.
da Impala-shell-tolken bruger tegnet \
til at undslippe, skal du bruge \
til at repræsentere det regulære udtryk escape-tegn i alle regulære udtryk, du sender gennem impala-shell . Du foretrækker måske at bruge de tilsvarende tegnklassenavne, såsom ]
i stedet for \d
, som du bliver nødt til at undslippe som \d
.
eksempler:
disse eksempler viser, hvordan du kan erstatte dele af en streng, der matcher et mønster, med erstatningstekst, som kan indeholde backreferences til alle ()
grupper i mønsterstrengen. Backreferencenumrene starter ved 1, og alle \
tegn skal undslippes som \
.
Erstat et tegnmønster med ny tekst:
> select regexp_replace('aaabbbaaa','b+','xyz');+------------------------------------------+| regexp_replace('aaabbbaaa', 'b+', 'xyz') |+------------------------------------------+| aaaxyzaaa |+------------------------------------------+Returned 1 row(s) in 0.11s
erstatte et tegnmønster med substitutionstekst, der indeholder den oprindelige matchende tekst:
> select regexp_replace('aaabbbaaa','(b+)','<\1>');+----------------------------------------------+| regexp_replace('aaabbbaaa', '(b+)', '<\1>') |+----------------------------------------------+| aaa<bbb>aaa |+----------------------------------------------+Returned 1 row(s) in 0.11s
Fjern alle tegn, der ikke er cifre:
gentag(STRING str, INT n) formål: returnerer argumentstrengen gentaget et angivet antal gange.
returtype: STRING
udskift (streng initial, STRENGMÅL, streng udskiftning) formål: Returnerer det oprindelige argument med alle forekomster af målstrengen erstattet af erstatningsstrengen.
returtype: STRING
Brugsnotater:
da denne funktion ikke bruger regulære udtryksmønstre, er den typisk hurtigere end REGEXP_REPLACE()
for simple strengsubstitutioner.
hvis et argument er NULL
, er returværdien NULL
.
Matching er store og små bogstaver.
hvis udskiftningsstrengen indeholder en anden forekomst af målstrengen, udføres udvidelsen kun en gang i stedet for at anvende igen på den nybyggede streng.
eksempler:
omvendt(streng a) formål: returnerer argumentstrengen med tegn i omvendt rækkefølge.
returtype: STRING
højre(streng A, int num_chars) se funktionenSTRRIGHT
. RPAD (STRING str, INT len, STRING pad) formål: returnerer en streng af en bestemt længde, baseret på den første argumentstreng. Hvis den angivne streng er for kort, er den polstret til højre med en gentagende sekvens af tegnene fra padstrengen. Hvis den angivne streng er for lang, afkortes den til højre.
returtype: STRING
Rtrim(streng a ) formål: returnerer argumentstrengen med alle forekomster af tegn angivet af det andet argument fjernet fra højre side. Fjerner mellemrum, hvis det andet argument ikke er angivet.
returtype: STRING
mellemrum(INT n) formål: returnerer en sammenkædet streng af det angivne antal mellemrum. Stenografi forrepeat(' ',n)
.
returtype: STRING
SPLIT_PART(STRENGKILDE, STRENGAFGRÆNSNING, BIGINT-indeks) formål: Returnerer den ønskedeindex
del af inputkildestrengen opdelt af afgrænseren.
- hvis indekset er et positivt tal, returnerer indeksdelen fra venstre i kildestrengen.
- hvis indekset er et negativt tal, returnerer indeksdelen fra højre i kildestrengen.
- hvis indekset er 0, returnerer en fejl.
afgrænseren kan bestå af flere tegn, ikke kun et enkelt tegn.
al matchning af afgrænseren udføres nøjagtigt uden brug af regulære udtryksmønstre.
returtype: STRING
eksempler:
SPLIT_PART('x,y,z',',',2)
vender tilbage 'y'
.
SPLIT_PART('one***two***three','***',2)
vender tilbage 'two'
.
SPLIT_PART('[email protected]@[email protected]@ghi', '@@', 3)
vender tilbage 'ghi'
.
SPLIT_PART('[email protected]@[email protected]@ghi', '@@', -3)
vender tilbage 'abc'
.
STRLEFT (streng A, int num_chars) formål: returnerer de længst til venstre tegn i strengen. Stenografi for et opkald tilsubstr()
med 2 argumenter.
returtype: STRING
STRRIGHT(streng A, int num_chars) formål: returnerer de højeste tegn i strengen. Stenografi for et opkald tilsubstr()
med 2 argumenter.
returtype: STRING
SUBSTR(streng A, int start ), SUBSTRING(streng a, int start ) formål: Returnerer den del af strengen, der starter ved et bestemt punkt, eventuelt med en specificeret maksimal længde. Tegnene i strengen indekseres fra 1.
returtype: STRING
oversæt(STRENGINPUT, streng fra, streng til) formål: returnerer strengeninput
med hvert tegn i argumentetfrom
erstattet med det tilsvarende tegn i argumentetto
. Tegnene Matches i den rækkefølge, de vises ifrom
ogto
.
for eksempel: translate ('hello world','world','earth')
returnerer 'hetta earth'
.
returtype: STRING
Brugsnoter:
hvis from
indeholder flere tegn end to
, fjernes de from
tegn, der ligger uden for længden af to
i resultatet.
for eksempel:
translate('abcdedg', 'bcd', '1')
vender tilbage 'a1eg'
.
translate('Unit Number#2', '# ', '_')
vender tilbage 'UnitNumber_2'
.
hvis from
er NULL
, returnerer funktionen NULL
.
hvis to
indeholder flere tegn end from
, ignoreres de ekstra tegn i to
.
hvis from
indeholder dubletter, erstattes dubletter med det første matchende tegn i to
.
for eksempel: translate ('hello','ll','67')
returnerer 'he66o'
.
TRIM (streng a) formål: returnerer inputstrengen med både for-og efterstillede mellemrum fjernet. Det samme som at føre strengen gennem bådeLTRIM()
ogRTRIM()
.
brugsnoter: bruges ofte under datarensningsoperationer under ETL-cyklussen, hvis inputværdier stadig kan have omgivende rum. Se BTRIM()
for en mere generel funktion, der kan fjerne andre førende og efterfølgende tegn udover mellemrum.
returtype: STRING
øvre(streng a), UCASE(streng a) formål: returnerer argumentstrengen konverteret til alle store bogstaver.
returtype: STRING
bemærkninger til brug:
i Impala 2.5 og nyere kan du forenkle forespørgsler, der bruger mange UPPER()
og LOWER()
opkald til at foretage store og små bogstaver ved at bruge operatørerne ILIKE
eller IREGEXP
i stedet.