odps sql 字符处理函数

odps sql 字符处理函数_第1张图片

字符类型转换

类型转换涉及隐式转化和显示转化

隐式转换

odps sql 字符处理函数_第2张图片

显式转换

odps sql 字符处理函数_第3张图片

  • 将DOUBLE类型转为BIGINT类型时,小数部分会被截断,例如cast(1.6 as BIGINT) = 1。
  • 满足DOUBLE格式的STRING类型转换为BIGINT时,会先将STRING转换为DOUBLE,再将DOUBLE转换为BIGINT,因此,小数部分会被截断,例如cast(“1.6” as BIGINT) = 1。
  • 满足BIGINT格式的STRING类型可以被转换为DOUBLE类型,小数点后保留一位,例如cast(“1” as DOUBLE) = 1.0。
  • 日期类型转换时采用默认格式yyyy-mm-dd hh:mi:ss。

字符串处理函数

substr

  • 命令格式:
    substr(string1, start_position[, length])
  • 用途:
    返回字符串string1从start_position开始长度为length的子串。
    示例:
SELECT substr("abc", 2);
> bc

SELECT  substr("abc", 2, 1);
> b

instr

  • 命令格式:
    instr(string1, string2[, start_position[, nth_appearance]])
  • 用途:
    计算一个子串在字符串中的位置.
  • 示例:
 select INSTR ('Tech on the net', 'e') 
 > 2 
select   INSTR ('Tech on the net', 'e', 1, 1)
> 2
select   INSTR ('Tech on the net', 'e', 1, 2)
>11 
select  INSTR ('Tech on the net', 'e', 1, 3)
>14

substr 和 instr结合

截取字符串中某个特定字符后的内容

ABCD_123 截取’_'后的数字

select substr('ABCD_123',instr('ABCD_123','_') + 1);
>123

截取 3_1.1.0_1 中的各部分

select substr ('3_1.1.0_1',1,instr('3_1.1.0_1','_',1,1)-1);
>3
select substr ('3_1.1.0_1',1,instr('3_1.1.0_1','_',1,2)-1);
>1.1.0
select substr('3_1.1.0_1',instr('3_1.1.0_1','_',1,2) + 1);
>1 

split_part

  • 命令格式:

split_part(string, separator, start[, end])

  • 用途:
    拆分字符串,返回指定的部分

同样是截取 3_1.1.0_1 各部分,用split_part更方便

select SPLIT_PART('3_1.1.0_1','_',1)
>3
select SPLIT_PART('3_1.1.0_1','_',2)
>1.1.0
select SPLIT_PART('3_1.1.0_1','_',3)
>1

字符串拼接函数

concat

  • 命令格式:
    concat(string A, string B…)

参数说明:
● A,B等为string类型,若输入为bigint, double, datetime类型会隐式转换为string后参与运算,其它类型报异常。
返回值:
string

  • 用途:
    返回值是将参数中的所有字符串连接在一起的结果。
  • 备注:
    如果没有参数或者某个参数为NULL,结果均返回NULL
    concat(), concat(null, ‘a’), concat(‘a’, null, ‘b’)返回值都是NULL。
select concat('abc', 'def','gh') ;
>abcdefgh

concat_ws

  • 命令格式:
    concat_ws(separator, string,string,string…)
  • 用途:
    将string用指定的spearator拼接起来
    (将不同的列用指定分隔符拼接起来
select concat_ws(',', 'abc', 'def', 'gh');
> abc,def,gh

odps sql 字符处理函数_第4张图片

SELECT  concat_ws(",",passengerid,survived)
FROM    train
;

odps sql 字符处理函数_第5张图片

wm_concat

  • 命令格式:
    wm_concat(separator, string)
  • 用途:
    用指定的spearator做分隔符,做字符串类型的SUM操作。
    (将某个列的值用指定的分隔符拼接起来
    参数说明:
    ● separator,string类型常量,分隔符。其他类型或非常量将引发异常。
    ● string,string类型,若输入为bigint, double, datetime类型会隐式转换为string后参与运算,其它类型报异常。
    返回值:
    以separator分隔的字符串。
    备注:
    对语句SELECT wm_concat(‘,’,name) from table;若table为空集合,这条语句返回{NULL}。

odps sql 字符处理函数_第6张图片
SELECT wm_concat(",",passengerid)
FROM train
;

在这里插入图片描述

参考资料:
https://help.aliyun.com/document_detail/57792.html?spm=a2c4g.11186623.6.681.33b9a9b0FIgwyd

你可能感兴趣的:(odps,sql)