當您需要解析數據表存儲的鍵值對字符串,并提取出鍵對應的值時,MaxCompute支持使用KEYVALUE函數,將字符串str按照split1分成Key-Value對,并按split2將Key-Value對分開,返回key所對應的Value。本文為您介紹KEYVALUE函數的說明和使用示例。
命令格式
keyvalue(string <str>,[string <split1>,string <split2>,] string <key>)
keyvalue(string <str>,string <key>)
參數說明
str:必填。STRING類型。待拆分的字符串。
split1、split2:可選。STRING類型。用于作為分隔符的字符串,按照指定的兩個分隔符拆分源字符串。如果表達式中沒有指定這兩項,默認split1為
";"
,split2為":"
。當某個被split1拆分后的字符串中有多個split2時,返回結果未定義。key:必填。STRING類型。將字符串按照split1和split2拆分后,返回key值對應的Value。
返回值說明
返回STRING類型。返回規則如下:
split1或split2值為NULL時,返回NULL。
str或key值為NULL或沒有匹配的key時,返回NULL。
如果有多個Key-Value匹配,返回第一個匹配上的key對應的Value。
使用示例
示例1:將字符串
0:1\;1:2
拆分為Key-Value對,返回Key值1
對應的Value。命令示例如下。--返回2。 select keyvalue('0:1\;1:2', 1);
沒有指定split1和split2,默認split1為
";"
,split2為":"
。經過split1拆分后,Key-Value對為
0:1\,1:2
。經過split2拆分后變為如下。0 1/ 1 2
返回Key為1所對應的Value值2。
示例2:將字符串
“\;decreaseStore:1\;xcard:1\;isB2C:1\;tf:21910\;cart:1\;shipping:2\;pf:0\;market:shoes\;instPayAmount:0\;”
按照“\;”
拆分為Key-Value對,再按照":"
將Key-Value分開,返回Key值tf
對應的Value。命令示例如下。--返回21910。 select keyvalue("\;decreaseStore:1\;xcard:1\;isB2C:1\;tf:21910\;cart:1\;shipping:2\;pf:0\;market:shoes\;instPayAmount:0\;","\;",":","tf");
將
“\;decreaseStore:1\;xcard:1\;isB2C:1\;tf:21910\;cart:1\;shipping:2\;pf:0\;market:shoes\;instPayAmount:0\;”
按照“\;”
拆分后,得出的Key-Value對如下所示。decreaseStore:1,xcard:1,isB2C:1,tf:21910,cart:1,shipping:2,pf:0,market:shoes,instPayAmount:0
按照
":"
拆分后,結果如下所示。decreaseStore 1 xcard 1 isB2C 1 tf 21910 cart 1 shipping 2 pf 0 market shoes instPayAmount 0
返回Key為
tf
對應的Value值21910。
相關函數
KEYVALUE函數屬于字符串函數,更多查找字符串、轉換字符串格式的相關函數請參見字符串函數。