字符串函数
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'