📜  PostgreSQL – hstore 数据类型

📅  最后修改于: 2022-05-13 01:57:15.250000             🧑  作者: Mango

PostgreSQL – hstore 数据类型

hstore 模块用于以键值对的形式为 PostgreSQL 中的单个值实现 hstore 数据类型。 hstore 数据类型在许多情况下非常有效,例如,很少查询或半结构化数据的具有多个属性的多行。

Syntax: variable_name hstore;

使用以下命令启用 hstore 扩展以使用 hstore 数据类型非常简单:

CREATE EXTENSION hstore;

现在让我们看几个例子以便更好地理解。
示例 1:
首先,我们创建一个books表,以id为主键,用于标识图书, title为产品的标题, attr存储图书的ISBN、重量和平装本等属性。 attr 列的数据类型是使用以下命令的 hstore:

CREATE TABLE books (
    id serial primary key,
    title VARCHAR (255),
    attr hstore
);

现在我们使用以下命令将一些数据添加到我们的书籍表中:

INSERT INTO books (title, attr)
VALUES
    (
        'Winds Of Winter',
        '"paperback" => "2403",
       "publisher" => "Bantam Spectra/US & Voyager Books/UK",
       "language"  => "English",
       "ISBN-13"   => "978-1449370000",
         "weight"    => "13.2 ounces"'
    ),
       (
        'A Dance with Dragons',
        '"paperback" => "2553",
       "publisher" => "Bantam Spectra/US & Voyager Books/UK",
       "language"  => "English",
       "ISBN-13"   => "978-1449370001",
         "weight"    => "14.2 ounces"'
    ),
       (
        'A Dream of Spring',
        '"paperback" => "2683",
       "publisher" => "Bantam Spectra/US & Voyager Books/UK",
       "language"  => "English",
       "ISBN-13"   => "978-1449370002",
         "weight"    => "15.7 ounces"'
    );

现在我们使用以下命令查询相同的插入数据:



SELECT
    attr
FROM
    books;

输出:

示例 2:
Postgresql hstore 支持使用-> 运算符。这用于从 hstore 列中查询特定键的值。例如,如果我们要查询books表中所有可用书籍的ISBN-13 ,可以使用相同的运算符,如下所示:

SELECT
    attr -> 'ISBN-13' AS isbn
FROM
    books;

输出: