當您需要解析資料表格儲存體的索引值對字串,並提取出鍵對應的值時,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函數屬於字串函數,更多尋找字串、轉換字串格式的相關函數請參見字串函數。