字符串函数

substring

  • 命令格式

string substring(string|binary , int [, int ])

  • 命令说明返回字符串strstart_position开始,长度为length的子串。
  • 参数说明
    • str:必填。STRING或BINARY类型。
    • start_position:必填。INT类型,起始位置为1。当start_position为0时,返回空串。当start_position为负数时,表示开始位置是从字符串的结尾往前倒数,最后一个字符是-1,依次往前倒数。
    • length:可选。BIGINT类型,表示子串的长度值。值必须大于0。

示例

  • 示例1:返回字符串abc从指定位置开始,指定长度的子串。命令示例如下。
    1. --返回bc
    2. select substring('abc', 2);
    3. --返回b
    4. select substring('abc', 2, 1);
    5. --返回bc
    6. select substring('abc',-2,2);
    7. --返回ab
    8. select substring('abc',-3,2);
    9. --返回001
    10. substring(bin(2345), 2, 3);

get_json_object

  • 命令格式string get_json_object(string , string )
  • 命令说明在一个标准JSON字符串中,按照path抽取指定的字符串。每次调用该函数时,都会读一次原始数据,因此反复调用可能影响性能和产生费用。您可以通过get_json_object,结合UDTF,轻松转换JSON格式日志数据,避免多次调用函数,详情请参见利用MaxCompute内建函数及UDTF转换JSON格式日志数据
  • 参数说明
    • json:必填。STRING类型。标准的JSON格式对象,格式为{Key:Value, Key:Value,…}。如果遇到英文双引号(”),需要用两个反斜杠(\)进行转义。如果遇到英文单引号(’),需要用一个反斜杠(\)进行转义。
    • path:必填。STRING类型。表示在json中的path,以$开头。更多path信息,请参见LanguageManual UDF。相关最佳实践案例,请参见JSON数据从OSS迁移至MaxCompute。不同字符的含义如下:
      • $:表示根节点。
      • .[‘’]:表示子节点。MaxCompute支持用这两种字符解析JSON对象,当JSON的Key本身包含.时,可以用[‘’]来替代。
      • [][number]表示数组下标,从0开始。
      • *Wildcard for [],返回整个数组。*不支持转义。
  • 返回值说明
    • 如果json为空或非法的json格式,返回NULL。
    • 如果json合法,path也存在,则返回对应字符串。 ```json set odps.sql.udf.getjsonobj.new = true;

select get_json_object(gal.content, “$.AppVersion”) appVersion, get_json_object(get_json_object(gal.content, “$.appInfo”), “$.systemVersion”) systemVersion, get_json_object(gal.content, “$.ip”) ip, get_json_object(gal.content, “$.time”) time, get_json_object(gal.content, “$.token”) token, get_json_object(gal.content, “$.uid”) uid, get_json_object(gal.content, “$.user-Agent”) userAgent from go_api_log gal where dt = ‘20220606’ and time = ‘2022-06-05T19:54:10.34850653Z’; ```