gpt4 book ai didi

postgresql - 我如何从 Postgres 的一组中挑选出一个 hstore 列?

转载 作者:行者123 更新时间:2023-11-29 12:49:16 32 4
gpt4 key购买 nike

假设我在 Postgres 11.5 中有一个表 foo:

CREATE TABLE foo (an_int integer, a_varchar varchar(50));

我可以通过整数选择唯一的列,并获取几个 a_varchar 值作为示例,如下所示:

SELECT an_int,
min(a_varchar) min_a_varchar,
max(a_varchar) max_a_varchar
FROM foo
GROUP BY 1;

假设我有一个表foo2:

CREATE TABLE foo2 (an_int integer, an_hstore hstore);

是否有类似的方法来为每个 an_int 选择一行并取出一个或多个 hstore值(value)观?我尝试使用 hstore_to_json() 但它没有用。转换为 varchar 确实有效,但我不知道这是否能很好地保留数据。

到目前为止,我的最佳答案是:

SELECT an_int,
min(an_hstore::varchar) min_an_hstore,
max(an_hstore::varchar) max_an_hstore
FROM foo2
GROUP BY 1;

最佳答案

很容易为hstore定义minmax

这里是 min 的例子:

CREATE FUNCTION hstore_smaller(hstore, hstore) RETURNS hstore
LANGUAGE sql IMMUTABLE AS
'SELECT CASE WHEN $2 IS NULL OR $1 #<# $2 THEN $1 ELSE $2 END';

CREATE AGGREGATE min(hstore) (
STYPE = hstore,
SFUNC = hstore_smaller
);

那么你就不必使用任何类型转换了。

关于postgresql - 我如何从 Postgres 的一组中挑选出一个 hstore 列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58105411/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com