字符串函数
substring
- 命令格式
string substring(string|binary
- 命令说明返回字符串str从start_position开始,长度为length的子串。
- 参数说明
- str:必填。STRING或BINARY类型。
- start_position:必填。INT类型,起始位置为1。当start_position为0时,返回空串。当start_position为负数时,表示开始位置是从字符串的结尾往前倒数,最后一个字符是-1,依次往前倒数。
- length:可选。BIGINT类型,表示子串的长度值。值必须大于0。
示例
- 示例1:返回字符串abc从指定位置开始,指定长度的子串。命令示例如下。
--返回bcselect substring('abc', 2);--返回bselect substring('abc', 2, 1);--返回bcselect substring('abc',-2,2);--返回abselect substring('abc',-3,2);--返回001substring(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’; ```
