如何使用sql函数在键值对中搜索特定键并返回其对应的值

时间:2019-07-19 09:01:03

标签: sql sql-function

假设该函数接受两个输入4和'3:66,8:54,4:23',该函数应在键值对'3:66,8:54,4:23'中搜索4 ,如果找到键4,则它应返回其对应的值,即e:23,否则应返回空。如何在sql中为其编写函数。

1 个答案:

答案 0 :(得分:0)

您没有告诉我们您正在使用的数据库产品。

Postgres中,您可以将string_to_array()split_part()结合使用:

select split_part(x.kv, ':', 2)
from unnest(string_to_array('3:66,8:54,4:23', ',')) as x(kv)
where split_part(x.kv, ':', 1) = '4';

您可以将其放入SQL函数:

create function get_key_value(p_input text, p_key text)
  returns text
as
$$
    select split_part(x.kv, ':', 2)
    from unnest(string_to_array(p_input, ',')) as x(kv)
    where split_part(x.kv, ':', 1) = p_key;
$$
language sql;

然后使用:

select get_key_value(''3:66,8:54,4:23'', '4');