CHAR_MATCHCOUNT
- 命令格式
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中出现过。
CONCAT
- 命令格式
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
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表情字符串。
- 如果
- 示例一
通过以下查询,可以提取+----+ 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"
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。
- 示例
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
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_encoding
、to_encoding
:STRING类型,源及目标字符集。- 如果任一输入参数为NULL,则返回NULL。
- 返回值说明
返回BOOLEAN类型。如果
str
能够成功转换,则返回True,否则返回False。 - 示例
is_encoding('测试', 'utf-8', 'gbk') = true is_encoding('測試', 'utf-8', 'gbk') = true -- gbk字库中有这两个繁体字。 is_encoding('測試', 'utf-8', 'gb2312') = false -- gb2312库中不包括这两个字。