函数说明:返回第一个非空参数,类似ifnull(expr1,expr2),可以设置多个表达式
示例:如果处理部门为空,则填充发起部门。
nullif(expr1,expr2)
:等值判定为空
函数说明:如果expr1等于expr2,则返回null,否则返回expr1;
示例:
>SELECTnullif(2,2);NULL3nvl(expr1,expr2)
函数说明:如果为null,则返回值;支持2个表达式
nvl2(expr1,expr2,expr3)
函数说明:如果不为null,则返回值,支持3个表达式
>SELECTnvl2(NULL,2,1);15endswith(left,right)
:结尾判断
函数说明:返回布尔值。如果从左往右,以右侧字符串结尾,则该值为True。如果任一输入表达式为NULL,则返回NULL。否则,返回False。左边或右边都必须是STRING或BINARY类型。
>SELECTendswith('SparkSQL','SQL');true>SELECTendswith('SparkSQL','Spark');false2、字符串拼接函数
concat(col1,col2,...,colN)
:拼接字符串
函数说明:连接字符串col1,col2,...,colN
>SELECTconcat('Spark','SQL');SparkSQL2concat_ws(sep,[column2],…,[columnN]):拼接字符串
函数说明:
concat_ws(“sep”,[column2],…,[columnN]):返回这N列拼接的带分隔符的字符串。
concat_ws(“sep”,str1,str2,…,strN):返回这N个字符串拼接后的字符串。
>SELECTconcat_ws('','Spark','SQL');SparkSQL3、字符串长度
length(expr)
:字符串长度
函数说明:返回字符串的长度
>SELECTlength('SparkSQL');10>SELECTlength(x'537061726b2053514c');92CHAR_LENGTH(expr)
>SELECTCHAR_LENGTH('SparkSQL');103CHARACTER_LENGTH(expr)
>SELECTCHARACTER_LENGTH('SparkSQL');104、字符串查找、截取
instr(str,substr)
函数说明:返回从1开始的字符出现索引
>SELECTinstr('SparkSQL','SQL');62left(str,len)
函数说明:返回第一个n字符
>SELECTleft('SparkSQL',3);Spa>SELECTleft(encode('SparkSQL','utf-8'),3);Spa3locate,position
函数说明:返回子字符串第一次出现的位置
>SELECTlocate('bar','foobarbar');4>SELECTlocate('bar','foobarbar',5);7>SELECTPOSITION('bar'IN'foobarbar');44parse_url
函数说明:提取URL的一部分
函数说明:返回将给定字符串值重复n次的字符串。
>SELECTrepeat('123',2);1231236substring(str,pos[,len])
substr(str,pos[,len])
函数说明:返回str从pos开始、长度为len的子字符串,或字节数组从pos结束、长度为len的切片。
>SELECTsubstr('SparkSQL',5);kSQL>SELECTsubstr('SparkSQL',-3);SQL>SELECTsubstr('SparkSQL',5,1);k>SELECTsubstr('SparkSQL'FROM5);kSQL>SELECTsubstr('SparkSQL'FROM-3);SQL>SELECTsubstr('SparkSQL'FROM5FOR1);k>SELECTsubstr(encode('SparkSQL','utf-8'),5);kSQL7substring_index(str,delim,count)
函数说明:返回子字符串的索引。substring_index(str,delim,count),str:要处理的字符串;delim:分隔符;count:计数
示例:substring_index([企业名称],'有限公司',1)
split(str,regex,limit)
函数说明:拆分字符串。在匹配regex的出现处拆分str,并返回长度最多为limit的数组
示例:split(str,regex,limit)
函数说明:提取与正则表达式匹配的内容,将字符串按照指定规则拆分为组后,返回指定组的字符串。
str:是待拆分的字符串
regexp:是常量或正则表达式
idx:是数组里要的下标值
>SELECTregexp_extract('100-200','(\\d+)-(\\d+)',1);100>SELECTREGEXP_EXTRACT('8d99d8','8d(\\d+)d8',1);992regexp_replace(strA,strB,strC)
函数说明:返回替换匹配正则表达式的内容
将字符串A中的符合java正则表达式B的部分替换为C。注意,在有些情况下要使用转义字符,类似oracle中的regexp_replace函数
replace(str,search,replace)
函数说明:替换字符串的所有实例
>SELECTreplace('ABCabc','abc','DEF');ABCDEF4translate(input,from,to)函数说明:替换字符串中的值。通过将[from]中的字符串中的字符替换为[to]中的字符串中的相应字符来翻译[input]字符串。
>SELECTtranslate('AaBbCc','abc','123');A1B2C3>SELECTtranslate("2.10.100.103.3","2.10","");33