testbook

字符串函数

ascii, base64, concat, context_ngrams, concat_ws, concat_ws, encode, find_in_set, format_number, get_json_object, in_file, instr, length, locate, lower, lcase, lpad, ltrim, ngrams, parse_url, printf, regexp_extract, regexp_replace, repeat, reverse, rpad, rtrim, sentences, space, split, str_to_map, substr, substring, translate, trim, unbase64, upper, ucase, chr, oracle_instr, to_number, trunk, to_char, to_semiangle, nvl, decode, greatest, lnnvl, nvl2, rangedecode
函数名返回类型描述
ascii(A) Int 返回A第一个字符的ascii值
说明:
       A可以是除了Boolean之外的任何基本类型,返回A第一个字符的ascii值。

举例:
select ascii('20') from src;
Result: 50


函数名返回类型描述
base64(A) Int 把binary转化为Base64字符
说明:
       A可以是除了Boolean之外的任何基本类型,返回A的Base64编码格式的值。

举例:
select base64(binary('1')) from src;
Result: MQ==


函数名返回类型描述
concat(a,b,c……) String 合并输入的所有项
说明:
       A可以是除了Boolean之外的任何基本类型,连接多个字符串,合并为一个字符串,可以接受任意数量的输入字符串,返回字符串类型。

举例:
select concat(1,2,3) from src limit 1;
Result: 123


函数名返回类型描述
context_ngrams(array>, array, int K, intpf) String 返回字符串中的 Top-K 和 N-grams
说明:
       从给定一个字符串上下文中,返回从一组标记的句子的Top-k和n-grams结果。

举例:
SELECT ngrams(sentences(lower(tweet)), 2, 100 [, 1000]) FROM twitter;


函数名返回类型描述
concat_ws(string SEP, string A, string B…) String 以SEP为分隔把A、B……合并起来
说明:
       所有输入参数都必须是字符类型

举例:
select concat_ws('|','1','2','3') from src;
Result: 1|2|3


函数名返回类型描述
encode(A,B) Int 返回A的长度
说明:
       AB都是字符类型,用B指定的编码格式来对A编码。

举例:
 select encode('transwarp','gbk') from src;
Result: transwarp


函数名返回类型描述
find_in_set(string str, string strList) Int 返回字符串str第一次在strlist出现的位置
说明:
       参数str以','分隔。函数返回字符串str第一次在strlist出现的位置。如果任一参数为NULL,返回NULL;如果第一个参数包含逗号,返回0。

举例:
select find_in_set('4','1,2,3,4') from src;
Result: 4


函数名返回类型描述
format_number(number,format) Double 返回指定格式的number
说明:
       A必须是数字类型,format必须是Int、TinyInt、BigInt的一种,指定了number的精度。

举例:
select format_number(100,2) from src;
Result: 100.00


函数名返回类型描述
get_json_object(string json_string, string path) Int 从指定地址获取json对象
说明:
       从指定地址获取json对象。

举例:
select a.timestamp, get_json_object(a.appevents, ‘$.eventid’),
get_json_object(a.appenvets, ‘$.eventname’) from log a;


函数名返回类型描述
in_file(str,filepath) Boolean 判断指定字符是否在文件中出现
说明:
       str为String类型,filepath必须是存在的文件路径。

举例:
select in_file('123','/etc/hosts') from src;
Result: false


函数名返回类型描述
instr(string str, string substr) Int 返回substr在str中出现的位置
说明:
       返回substr在str中出现的位置,不曾出现则返回0。

举例:
select instr('001122','1') from src;
Result: 3


函数名返回类型描述
length(A) Int 返回A的长度
说明:
       A可以是除了Boolean之外的任何基本类型,返回A的长度。

举例:
select length(1.1) from src;
Result: 3


函数名返回类型描述
locate(string substr, string str[, int pos]) Int 定位substr第一次在str中出现的位置
说明:
       如果指定了pos值,则返回从str的第pos个位置之后,第一次出现substr的位置。

举例:
select locate('123','456789123') from src;
Result: 7


函数名返回类型描述
lower(string A) String 把A中字母都转化为小写
说明:
       把A中字母都转化为小写。

举例:
select lower('A') from src;
Result: a


函数名返回类型描述
lcase(string A) String 把A中字母都转化为小写
说明:
       用法和 'lower' 一致。

举例:
select lower('A') from src;
Result: a


函数名返回类型描述
lpad(string str, int len, string pad) String 用pad补全字符到指定长度
说明:
       用pad参数的值,在左方补全str为len长度。如果len的值小于str的长度,则返回从左截取len长度的字符。

举例:
select lpad('123456789',11,'a') from src;
Result: aa123456789


函数名返回类型描述
ltrim(string A) String 去掉字符左侧的空格
说明:
       只去掉字符左侧的空格,返回字符类型。

举例:
select ltrim(' transwarp ') from src limit 1;
Result: 'transwarp '


函数名返回类型描述
ngrams(array>, int N, int K, int pf) Int 返回字符序列中的Top-K和N-grams值
说明:
       返回字符序列中的Top-K和N-grams值。

举例:
SELECT ngrams(sentences(lower(tweet)), 2, 100 [, 1000]) FROM twitter;


函数名返回类型描述
parse_url(string urlString, string part Int 返回URL中指定的部分
说明:
       字符类型的part指定了返回URL的部分,可以是:'HOST', 'PATH', 'QUERY', 'REF', 'PROTOCOL', 'AUTHORITY', 'FILE', and 'USERINFO'中的一个。

举例:
select parse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1', 'HOST') from src limit 1;
Result: facebook.com


函数名返回类型描述
printf(String format, Obj... args) String 返回指定输出格式的字符
说明:
       A可以是除了Boolean之外的任何基本类型,返回A的长度。

举例:
SELECT printf("Hello World %d %s", 100, "days")FROM src LIMIT 1;
Result: Hello World 100 days


函数名返回类型描述
regexp_extract(string subject, string pattern, int index) String 返回指定部分的正则表达式
说明:
       通过下标返回正则表达式指定的部分。

举例:
select regexp_extract('foothebar', 'foo(.*?)(bar)', 0) from src;
Result: the


函数名返回类型描述
regexp_replace(string INITIAL_STRING, string PATTERN, string REPLACEMENT) Int 替换符合正则表达式的部分
说明:
       把INITIAL_STRING中符合正则表达式PATTERN的部分替换为REPLACEMENT。

举例:
SELECT regexp_replace('foothebarfoobar', 'foo(.*?)(bar)', 'num') FROM src LIMIT 1;
Result: numnum


函数名返回类型描述
repeat(string str, int n) String 返回A的长度
说明:
       A可以是除了Boolean之外的任何基本类型,返回n个str连在一起的字符串。

举例:
select repeat(1, 10) from src;
Result: 1111111111


函数名返回类型描述
reverse(A) String 把字符A转置
说明:
       返回转置的字符。

举例:
select reverse('transwarp') from src limit 1;
Result: prawsnart


函数名返回类型描述
rpad(string str, int len, string pad) String 用pad在右侧补全字符到指定长度
说明:
       用pad参数的值,在右方补全str为len长度。如果len的值小于str的长度,则返回从右截取len长度的字符。

举例:
select rpad('123456789',11,'a') from src;
Result: 123456789aa


函数名返回类型描述
rtrim(string A) String 去掉字符右侧的空格
说明:
       只去掉字符右侧的空格,返回字符类型。

举例:
select rtrim(' transwarp ') from src limit 1;
Result: 'transwarp '


函数名返回类型描述
sentences(str, lang, country) Array<Array<String>> 把自然语言分成句子和词组
说明:
       给一个包含自然语言句子的字符类型,在合适的位置分词,返回一些包含词组的数组。

举例:
select sentences('Hello there! How are you?') from src limit 1;
Result: [["Hello","there"],["How","are","you"]]


函数名返回类型描述
space(int n) String 返回n个空格的字符
说明:
       返回n个空格的字符。

举例:
select space(5) from src limit 1;
Result: '     '


函数名返回类型描述
split(string str, string pat) Array<string> 按指定分隔符分割字符
说明:
       把字符串str按pat分隔,返回String数组。

举例:
select split('TDH-Inceptor','-') from src;
Result: ["TDH","Inceptor"]


函数名返回类型描述
str_to_map(text[, delimiter1, delimiter2]) Map 把字符转化为map
说明:
       第一个分隔符用于分隔不同组的K-V,第二个分隔符用于分隔每一组K-V。

举例:
select str_to_map('a-b=c-d','=','-') from src;
Result: {"a":"b","c":"d"}


函数名返回类型描述
substr(string A, int start [, lenth]) String 获取子字符串
说明:
       返回A从start位置开始的子字符串,若指定length则返回从start开始,长度为length的子字符串。

举例:
select substr('Transwarp',6,3) from src limit 1;
Result: war


函数名返回类型描述
substring(string A, int start [, lenth]) String 获取子字符串
说明:
       用法和 'substr' 一致

举例:
select substring('Transwarp',6,3) from src limit 1;
Result: war


函数名返回类型描述
translate(string|char|varchar input, string|char|varchar from, string|char|varchar to) String 用指定字符替换目标
说明:
       translate方法作用于input string(第一个参数)的字符上,规则为出现在from_string中的字符用to_string中对应位置的字符来替换。如果to_string的长度 比from_string短,那么from_string中多出来的位置的字符会在output中被移除。

举例:
select translate('abcdef', 'adc', '19') from src limit 1;
Result: 1b9ef


函数名返回类型描述
trim(string s) String 去掉字符左右的空格
说明:
       去掉字符左右的空格。

举例:
select trim(' transwarp ') from src limit 1;
Result: 'transwarp'


函数名返回类型描述
unbase64(string str) Binary 把base64格式转化为binary
说明:
       把base64格式转化为binary。

举例:
select unbase64(base64(binary('Transwarp'))) from src limit 1;
Result: Transwarp


函数名返回类型描述
upper(string A) String 把字符中的字母都转化为大写
说明:
       把字符中的字母都转化为大写,其他字符不变。

举例:
select upper('transwarp') from src limit 1;
Result: TRANSWARP


函数名返回类型描述
ucase(string A) String 把字符中的字母都转化为大写
说明:
       用法和upper一致。

举例:
select ucase('transwarp') from src limit 1;
Result: TRANSWARP


函数名返回类型描述
chr(A) String 返回整型的char值
说明:
       chr(number_code):只能传入int,转为String.valueof((char) number_code),字符编码格式为内置的unicode。

举例:
select chr(123) from src;
Result: {


函数名返回类型描述
oracle_instr(string1, string2 [, start_position [, nth_appearance ]]) String 返回子字符第一次出现的下标
说明:
       新增四个参数,遵守Oracle的函数定义。

举例:
SELECT oracle_instr('Transwarp', 'warp') FROM src LIMIT 1;
Result: 6


函数名返回类型描述
to_number(value, format_mask) Int 把string转化为number
说明:
       按照指定的格式来格式化字符。

举例:
select to_number('1239.0') from src limit 1;
Result: 1239


函数名返回类型描述
trunc(date, format) String 返回日期的指定格式
说明:
       支持string类型的date字段按format返回特定的日期。format='yyyy'/'yy',返回该年第一天的日期;format='mm',返回该月第一天;format='dd',得到日期;format='d',得到该周第一天的日期;format='hh',得到精确到小时的时间;format='mi',得到精确到分钟的时间。

举例:
select trunc('2015-01-30 11:11:11','hh') from src limit 1;
Result: 2015-01-30 11:00:00


函数名返回类型描述
to_char(date, pattern) / to_char(number [,format]) String 返回指定格式的日期(数字)字符
说明:
       输入的第一个参数为date的时候,把yyyy-MM-dd HH:mm:ss形式的string转化为输入pattern形式的string;第一个参数为数字时,则把数字转成string或按照一定format转string

举例:
select to_char('2015-01-30','yyyyMMdd') from src;
Result: 20150130


函数名返回类型描述
to_semiangle(string) String 把全角字符转化为半角字符
说明:
       把全角字符转化为半角字符。

举例:
select to_semiangle('transwarp') from src limit 1;
Result: 2015-01-30 11:00:00


函数名返回类型描述
nvl(eExpr1, eExpr2) String 替换null为其他字符
说明:
       eExpr1为空时返回eExpr2的值,仅支持基本类型(包括string)。

举例:
select nvl(null,'Transwarp') from src limit 1;
Result: Transwarp


函数名返回类型描述
nvl2(string1, value_if_not_null, value_if_null) String 根据字符是否为null返回不同的值
说明:
       若string1为null,返回value_if_not_null,否则返回value_if_null。

举例:
select nvl2(null,'Transwarp','TDH') from src limit 1;
Result: 2015-01-30 11:00:00


函数名返回类型描述
lnnvl(condition) String 处理判断条件中有null值出现的情况
说明:
       condition是一个表达式,所得值是Boolean类型。condition为null时,返回true;condition为true时返回false;condition为false时返回true。

举例:
select lnnvl(true), lnnvl(false), lnnvl(null) from src limit 1;
Result: false true true


函数名返回类型描述
decode(value1, value2, value3, .... defaultValue) String 根据字符是否相等选择不同返回值
说明:
       返回当value1=value2的时候返回value3,否则返回defaultValue。

举例:
select decode(1,1,'transwarp','TDH') from src;
Result: transwarp


函数名返回类型描述
range_decode(value, isLeftClose, isRightClose,left1, right1, value1, left2, right2, value2, defaultValue) String 根据字符是否相等选择不同返回值
说明:
       返回当value1=value2的时候返回value3,否则返回defaultValue。

举例:
SELECT range_decode('dep', false, true,"ACCOUNT", "HR", "NO-DEP") FROM src LIMIT 1;
Result:NO-DEP


函数名返回类型描述
greatest(value1, value2, value3, ....) value的共有类型 返回value中最大的值
说明:
       如果是数字类型比较,返回类型所有参数的公共类型,返回其中的最大值。如果是字符类型比较,则是逐位比较。

举例:
select greatest('10','9') from src limit 1;
Result: '9'