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;
输出: