当前位置:   article > 正文

ODPS字符串函数_odps 字符串函数

odps 字符串函数

CHAR_MATCHCOUNT

  • 命令格式
    bigint char_matchcount(string str1, string str2)
  • 命令说明

    该函数用于计算str1中有多少个字符出现在str2中。

  • 参数说明

    str1str2STRING类型,必须为有效的UTF-8字符串。如果对比中发现有无效字符,则函数返回负值。

  • 返回值说明

    返回BIGINT类型。如果任一输入参数为NULL,则返回NULL。

  • 示例
    1. char_matchcount('abd','aabc') = 2
    2. -- str1中得两个字符串'a','b'在str2中出现过。

CONCAT

  • 命令格式
    string concat(string a, string b...)
  • 命令说明

    该函数的返回值是将参数中的所有字符串连接在一起的结果。

  • 参数说明

    输入参数为STRING类型。如果输入参数为BIGINT、DOUBLE、DECIMAL或者DATETIME类型,则会隐式转换为STRING后参与运算,其它类型抛异常。

  • 返回值类型

    返回STRING类型。如果没有参数或者任一参数为NULL,则返回NULL。

  • 示例
    1. concat('ab','c') = 'abc'
    2. concat() = NULL
    3. concat('a', null, 'b') = NULL

GET_JSON_OBJECT

  • 命令格式
    STRING GET_JSON_OBJECT(STRING json,STRING path)
  • 命令说明

    该函数用于在一个标准JSON字符串中,按照path抽取指定的字符串。每次调用该函数时,都会读一次原始数据,因此反复调用可能会造成性能和费用的浪费。利用GET_JSON_OBJECT结合UDTF,您可以轻松转换JSON格式日志数据,避免多次调用函数,详情请参见利用MaxCompute内建函数及UDTF转换JSON格式日志数据

  • 参数说明
    • json:STRING类型,标准的json格式字符串。
    • path:STRING类型,用于描述在json中的path,以$开头。关于path的说明,请参见LanguageManual UDF
      • $:表示根节点。
      • .:表示子节点。
      • [][number]表示数组下标,数组的格式为key[sub1][sub2][sub3]……
      • *Wildcard for [],返回整个数组。*不支持转义。
  • 返回值说明
    • 如果json为空或者非法的json格式,则返回NULL。
    • 如果json合法,path也存在,则返回对应字符串。
    • 当前不支持一个Object中出现两次相同的Key,例如{a:1, a:0},否则可能造成无法解析。
    • 当前不支持Emoji表情字符串。
  • 示例一
    1. +----+
    2. json
    3. +----+
    4. {"store":
    5. {"fruit":[{"weight":8,"type":"apple"},{"weight":9,"type":"pear"}],
    6. "bicycle":{"price":19.95,"color":"red"}
    7. },
    8. "email":"amy@only_for_json_udf_test.net",
    9. "owner":"amy"
    10. }
    通过以下查询,可以提取json对象中的信息。
    1. odps> SELECT get_json_object(src_json.json, '$.owner') FROM src_json;
    2. amy
    3. odps> SELECT get_json_object(src_json.json, '$.store.fruit\[0]') FROM src_json;
    4. {"weight":8,"type":"apple"}
    5. odps> SELECT get_json_object(src_json.json, '$.non_exist_key') FROM src_json;
    6. NULL
    示例二
    1. get_json_object('{"array":[["aaaa",1111],["bbbb",2222],["cccc",3333]]}','$.array[1][1]')= "2222"
    2. get_json_object('{"aaa":"bbb","ccc":{"ddd":"eee","fff":"ggg","hhh":["h0","h1","h2"]},"iii":"jjj"}','$.ccc.hhh[*]') = "["h0","h1","h2"]"
    3. get_json_object('{"aaa":"bbb","ccc":{"ddd":"eee","fff":"ggg","hhh":["h0","h1","h2"]},"iii":"jjj"}','$.ccc.hhh[1]') = "h1"

INSTR

  • 命令格式
    bigint instr(string str1, string str2[, bigint start_position[, bigint nth_appearance]])
  • 命令说明

    该函数用于计算子串str2在字符串str1中的位置。

  • 参数说明
    • str1:STRING类型,要搜索的字符串。如果输入为BIGINT、DOUBLE、DECIMAL或者DATETIME类型,则会隐式转换为STRING后参与运算,其它类型抛异常。
    • str2:STRING类型,要搜索的子串。如果输入为BIGINT、DOUBLE、DECIMAL或者DATETIME类型,则会隐式转换为STRING后参与运算,其它类型抛异常。
    • start_position:BIGINT类型,其它类型抛异常。表示从str1的第几个字符开始搜索,默认起始位置是第一个字符位置1。
    • nth_appearance:BIGINT类型,大于0。表示子串在字符串中的第nth_appearance次匹配的位置。如果nth_appearance为其它类型或小于等于0,则抛异常。
  • 返回值说明
    • 返回BIGINT类型。
    • 如果在str1中未找到str2,则返回0。
    • 如果任一输入参数为NULL,则返回NULL。
    • 如果str2为空串,则总能匹配成功,例如instr(‘abc’, ‘’)会返回 1。
  • 示例
    1. instr('Tech on the net', 'e') = 2
    2. instr('Tech on the net', 'e', 1, 1) = 2
    3. instr('Tech on the net', 'e', 1, 2) = 11
    4. instr('Tech on the net', 'e', 1, 3) = 14

IS_ENCODING

  • 命令格式
    boolean is_encoding(string str, string from_encoding, string to_encoding)
  • 命令说明

    用于判断输入字符串str是否可以从指定的一个字符集from_encoding转为另一个字符集to_encoding。可用于判断输入是否为乱码,通常的用法是将from_encoding设为UTF-8,to_encoding设为GBK。

  • 参数说明
    • str:STRING类型,空字符串可以被认为属于任何字符集。
    • from_encodingto_encoding:STRING类型,源及目标字符集。
    • 如果任一输入参数为NULL,则返回NULL。
  • 返回值说明

    返回BOOLEAN类型。如果str能够成功转换,则返回True,否则返回False。

  • 示例
    1. is_encoding('测试', 'utf-8', 'gbk') = true
    2. is_encoding('測試', 'utf-8', 'gbk') = true
    3. -- gbk字库中有这两个繁体字。
    4. is_encoding('測試', 'utf-8', 'gb2312') = false
    5. -- gb2312库中不包括这两个字。

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/725913
推荐阅读
相关标签
  

闽ICP备14008679号