首批通过分布式安全可靠测评,为关键业务系统打造
KEYVALUE
更新时间:2026-07-15 20:42:45
描述
该函数用于从键值对字符串中提取特定键对应的值。
说明
对于 OceanBase 数据库 V4.3.5 版本,该函数从 V4.3.5 BP1 版本开始支持。
注意事项
不允许指定
delimiter_1和delimiter_2为相同字符串。若
delimiter_1分割得到的字符串中包含多个delimiter_2,则使用第一个delimiter_2作为分割符得到对应的 Key 和 Value。例如,执行SELECT KEYVALUE('name:Li:xiang;age:12', ';', ':', 'name');返回结果如下:+----------------------------------------------------+ | KEYVALUE('name:Li:xiang;age:12', ';', ':', 'name') | +----------------------------------------------------+ | Li:xiang | +----------------------------------------------------+ 1 row in set
语法声明
KEYVALUE(str, [delimiter_1, delimiter_2,] key)
参数解释
str: 表示包含多个键值对的字符串。支持类型:VARCHAR、TINYTEXT、TEXT、LONGTEXT、NULL等,不支持JSON。delimiter_1, delimiter_2,:可选项,表示分隔符。具体如下:delimiter_1:表示键值对分隔符,默认为;。支持类型:VARCHAR、NULL。delimiter_2:表示键值分隔符,默认为:。支持类型:VARCHAR、NULL。
key: 表示要查找的键(key)。支持类型:VARCHAR、NULL。即将str按照delimiter_1和delimiter_2拆分后,返回key值对应的value。
返回类型
- 当表达式任意参数为
NULL时,返回结果为NULL。 - 如果未找到对应的键,函数将返回
NULL。 - 如果有多个键值对匹配,返回第一个匹配上的
key对应的value。
示例
SELECT
KEYVALUE(NULL, ',', '=', 'b') AS key_value_null,
KEYVALUE('a=1,b=2,c=3', NULL, '=', 'b') AS delimiter_1_null,
KEYVALUE('a=1,b=2,c=3', ',', NULL, 'b') AS delimiter_2_null,
KEYVALUE('a=1,b=2,c=3', ',', '=', NULL) AS key_null,
KEYVALUE('a=1,b=2,c=3', ',', '=', 'b') AS b,
KEYVALUE('a=1,b=2,c=3,b=4', ',', '=', 'b') AS bs,
KEYVALUE('a:1;b:2;c:3', 'b') split_default;
返回结果如下:
+----------------+------------------+------------------+----------+------+------+---------------+
| key_value_null | delimiter_1_null | delimiter_2_null | key_null | b | bs | split_default |
+----------------+------------------+------------------+----------+------+------+---------------+
| NULL | NULL | NULL | NULL | 2 | 2 | 2 |
+----------------+------------------+------------------+----------+------+------+---------------+
1 row in set