我在PostgreSQLhstore
类型上使用%%运算符,该运算符将hstore(有效键值类型)转换为元素交替为{{key,value},{key
value}}的数组。
当我想返回这些平坦的hstore的数组时,出现此错误:could not find array type for data type text[]
由于PostgreSQL缺乏对数组数组的支持。
从好奇心的角度来看,有人知道为什么不支持这些吗?更重要的是,这种情况是否可以解决?
目前,我将结果串联成一个字符串(用逗号分隔),并在应用程序端(C#和NPGSQL)对其进行解析。但是,这种方法感觉不太正确,我希望能够以.NET数组或键值数组等形式读回行。
非常感谢。
从好奇心的角度来看,有人知道为什么不支持这些吗?
一个通用的答案是因为数组本质上是反关系的。删除重复值是您获得第一范式的方式。从关系理论的角度来看,拥有重复基团似乎是很疯狂的。
通常,关系正确的做法是为您的重复值提取一个表。因此,如果您对以下内容进行建模:
CREATE TABLE users (
id integer primary key,
name varchar,
favorite_colors varchar[],
...
);
您应该这样重新定义此关系:
CREATE TABLE users (
id integer primary key,
name varchar,
...
);
CREATE TABLE favorite_colors (
user_id integer references users,
color varchar
);
甚至:
CREATE TABLE users (
id integer primary key,
name varchar,
...
);
CREATE TABLE colors (
color varchar primary key
);
CREATE TABLE favorite_colors (
user_id integer references users,
color varchar references colors,
primary key (user_id, color)
);
Hstore支持许多功能,其中许多功能可以轻松地将其集成到关系世界视图中。我认为解决问题的最简单方法是使用该each
函数将hstore值转换为关系,然后可以像正常值集一样使用这些关系。无论如何,这就是解决地址在其他数据库中具有多个值的方式:查询和使用结果集。
问题内容: 很抱歉,如果这是重复的,尽管我无法在任何地方找到确切的答案: 有没有办法在 postgreSQL中 创建一个包含多个数据类型的数组? 我有一个类型的列(类型文本数组);尽管我想从type插入三个条目,然后插入第四个条目到此数组中。 有办法吗?如果是这样,怎么办? 问题答案: 我不认为有一种方法可以声明具有多个类型的数组。但是,我认为您可以使用复合类型来完成您想做的事情,例如, 然后,您
问题内容: 我使用Vlad Mihalcea的库来将SQL数组(在我的情况下为Postgresql)映射到JPA。然后,假设我有一个实体,例如。 适当的SQL是: 使用QueryDSL,我想获取包含所有给定标签的行。原始SQL可能是: (摘自:https : //www.postgresql.org/docs/9.1/static/functions- array.html ) 可以用QueryD
当我在spring boot中使用postgresql函数时,当我使用array参数时,它返回一个数据不匹配错误。 我有一份模型文件。我正在将数据按顺序保存到这个模型文件中。当我以下面的方式将此发送到函数时,我得到一个错误。 多谢了。
问题内容: 我正在尝试绑定准备好的语句参数,该参数是“多维” PostgreSQL数组。这是一个数组示例(列类型为): 如何使用预处理语句绑定类似的值?我试过了: 它没有用: 无法将java.lang.String的实例强制转换为Types.ARRAY 有任何想法吗? 问题答案: 尝试这样的事情(未经测试): 链接: JDBC中的Postgres和多维数组 将数组从Java传递到Postgres
问题内容: 我有2个表格-包含课程ID和课程名称的课程以及包含每个课程标签的tagCourse。 我想编写一个函数,该函数按给定的标签数组搜索课程,并按匹配标签的数量将其返回。但是我不知道如何正确,有效地编写它。请帮我。 IE。 问题答案: CREATE OR REPLACE FUNCTION search_by_tags(tags varchar[]) RETURNS TABLE (id_cou
问题内容: 参考原始的stackoverflow问题,我试图将gin索引应用于Postgres 9.4中数组对象中的键,但没有得到第一个答案中所述的结果。 您能纠正错误吗? 我遵循的步骤已写在下面。 第1部分:创建表和索引 第2部分:查询 该查询给出空结果。 我也尝试使用GIN索引。 替代索引和查询: 问题答案: 原始答案中的这个特定jsonb示例缺少用于包含查询的非原始对象周围的数组层。此后已修