赞
踩
bigint char_matchcount(string str1, string str2)
该函数用于计算str1
中有多少个字符出现在str2
中。
str1
、str2
:STRING类型,必须为有效的UTF-8字符串。如果对比中发现有无效字符,则函数返回负值。
返回BIGINT类型。如果任一输入参数为NULL,则返回NULL。
- char_matchcount('abd','aabc') = 2
- -- str1中得两个字符串'a','b'在str2中出现过。
string concat(string a, string b...)
该函数的返回值是将参数中的所有字符串连接在一起的结果。
输入参数为STRING类型。如果输入参数为BIGINT、DOUBLE、DECIMAL或者DATETIME类型,则会隐式转换为STRING后参与运算,其它类型抛异常。
返回STRING类型。如果没有参数或者任一参数为NULL,则返回NULL。
- concat('ab','c') = 'abc'
- concat() = NULL
- concat('a', null, 'b') = NULL
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
也存在,则返回对应字符串。{a:1, a:0}
,否则可能造成无法解析。- +----+
- json
- +----+
- {"store":
- {"fruit":[{"weight":8,"type":"apple"},{"weight":9,"type":"pear"}],
- "bicycle":{"price":19.95,"color":"red"}
- },
- "email":"amy@only_for_json_udf_test.net",
- "owner":"amy"
- }
通过以下查询,可以提取json
对象中的信息。 - odps> SELECT get_json_object(src_json.json, '$.owner') FROM src_json;
- amy
- odps> SELECT get_json_object(src_json.json, '$.store.fruit\[0]') FROM src_json;
- {"weight":8,"type":"apple"}
- odps> SELECT get_json_object(src_json.json, '$.non_exist_key') FROM src_json;
- NULL
示例二 - get_json_object('{"array":[["aaaa",1111],["bbbb",2222],["cccc",3333]]}','$.array[1][1]')= "2222"
- get_json_object('{"aaa":"bbb","ccc":{"ddd":"eee","fff":"ggg","hhh":["h0","h1","h2"]},"iii":"jjj"}','$.ccc.hhh[*]') = "["h0","h1","h2"]"
- get_json_object('{"aaa":"bbb","ccc":{"ddd":"eee","fff":"ggg","hhh":["h0","h1","h2"]},"iii":"jjj"}','$.ccc.hhh[1]') = "h1"
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,则抛异常。str1
中未找到str2
,则返回0。str2
为空串,则总能匹配成功,例如instr(‘abc’, ‘’)
会返回 1。- instr('Tech on the net', 'e') = 2
- instr('Tech on the net', 'e', 1, 1) = 2
- instr('Tech on the net', 'e', 1, 2) = 11
- instr('Tech on the net', 'e', 1, 3) = 14
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_encoding
、to_encoding
:STRING类型,源及目标字符集。返回BOOLEAN类型。如果str
能够成功转换,则返回True,否则返回False。
- is_encoding('测试', 'utf-8', 'gbk') = true
- is_encoding('測試', 'utf-8', 'gbk') = true
- -- gbk字库中有这两个繁体字。
- is_encoding('測試', 'utf-8', 'gb2312') = false
- -- gb2312库中不包括这两个字。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。