本文为您介绍如何使用实时计算表值函数MULTI_KEYVALUE。

说明 仅支持实时计算2.2.2及以上版本。

语法

MULTI_KEYVALUE(VARCHAR str, VARCHAR split1, VARCHAR split2, VARCHAR key_name1, VARCHAR key_name2, ...)

入参

参数 数据类型 说明
str VARCHAR 字符串中的key-value(kv)对。
split1 VARCHAR kv对的分隔符。当split1为null,表示按照whitespace作为kv对的分割符。当split1的长度>1时,split1仅表示分隔符的集合,每个字符都表示一个有效的分隔符。
split2 VARCHAR kv的分隔符。当split2为null,表示按照whitespace作为kv的分割符。当split2的长度>1时,split2仅表示分隔符的集合,每个字符都表示一个有效的分隔符。
key_name1, key_name2, ... VARCHAR 需要获取value的key值列表。

功能描述

解析str字符串中的key-value对,匹配有split1和split2的key-value对,并返回参数列表里key_name1,key_name2等对应的value值列表。key_name值不存在时,对应的value值是null。

示例

  • 测试数据
    str(VARCHAR) split1(VARCHAR) split2(VARCHAR) key1(VARCHAR) key2(VARCHAR)
    k1=v1;k2=v2 ; = k1 k2
    null ; = k1 k2
    k1:v1;k2:v2 ; : k1 k3
    k1:v1;k2:v2 ; = k1 k2
    k1:v1;k2:v2 , : k1 k2
    k1:v1;k2=v2 ; : k1 k2
    k1:v1abck2:v2 cab : k1 k2
    k1:v1;k2=v2 ; := k1 k2
    k1:v1 k2:v2 null : k1 k2
    k1 v1;k2 v2 ; null k1 k2
  • 测试语句
    SELECT c1, c2 
    FROM T1, lateral table(MULTI_KEYVALUE(str, split1, split2, key1, key2)) 
    as T(c1, c2)
    
  • 测试结果
    c1(VARCHAR) c2(VARCHAR)
    v1 v2
    null null
    v1 null
    null null
    null null
    v1 null
    v1 v2
    v1 v2
    v1 v2
    v1 v2