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