PostgreSQL JSON 函数(译文)

原文请查看:http://www.postgresqltutorial.com/postgresql-json/

 

简介:在本教程中,我们将向您展示如何使用PostgreSQL JSON数据类型。此外,我们将向您介绍一些最常见的PostgreSQL JSON运算符和处理JSON数据的函数。

JSON代表JavaScript Object Notation。JSON是一种开放的标准格式,由键值对组成。JSON的主要用途是在服务器和Web应用程序之间传输数据。与其他格式不同,JSON是人类可读的文本。

从版本9.2开始,PostgreSQL支持本机JSON数据类型。它提供了许多用于操作JSON数据的函数和运算符。

让我们开始创建一个  用JSON数据类型练习的新表

1

2

3

4

CREATE TABLE orders (

ID serial NOT NULL PRIMARY KEY,

info json NOT NULL

);

orders表由两列组成:

  1. 该  id 列是标识订单的主键列。
  2. info列以JSON的形式存储数据。

插入JSON数据

要将数据插入JSON列,您必须确保数据采用有效的JSON格式。以下INSERT语句将新行插入orders表中。

1

2

3

4

5

INSERT INTO orders (info)

VALUES

(

'{ "customer": "John Doe", "items": {"product": "Beer","qty": 6}}'

);

这意味着John Doe买了6 一瓶beers

让我们同时插入多行。

1

2

3

4

5

6

7

8

9

10

11

INSERT INTO orders (info)

VALUES

(

'{ "customer": "Lily Bush", "items": {"product": "Diaper","qty": 24}}'

),

(

'{ "customer": "Josh William", "items": {"product": "Toy Car","qty": 1}}'

),

(

'{ "customer": "Mary Clark", "items": {"product": "Toy Train","qty": 2}}'

);

 

查询JSON数据

要查询JSON数据,请使用该SELECT语句,该语句类似于查询其他本机数据类型:

1

2

3

4

SELECT

info

FROM

orders;

postgresql json查询数据

PostgreSQL以JSON的形式返回结果集。

PostgreSQL提供了两个本机运算符->->>可帮助您查询JSON数据。

  • 运算符->按键返回JSON对象字段。
  • 运算符->>按文本返回JSON对象字段。

以下查询使用运算符->以JSON的形式获取所有客户:

1

2

3

4

SELECT

info -> 'customer' AS customer

FROM

orders;

postgresql JSON本机运算符

以下查询使用operator ->>以文本形式获取所有客户:

1

2

3

4

SELECT

info ->> 'customer' AS customer

FROM

orders;

postgresql json文本运算符

因为->运算符返回JSON对象,所以可以使用运算符->>将其链接以检索特定节点。例如,以下语句返回所有已售出的产品:

1

2

3

4

5

6

SELECT

info -> 'items' ->> 'product' as product

FROM

orders

ORDER BY

product;

postgresql json运算符链

首先   info -> 'items'将项目作为JSON对象返回。然后info->'items'->>'product'将所有产品作为文本返回。

在WHERE子句中使用JSON运算符

我们可以使用JSON运算符in WHERE子句来过滤返回的行。例如,要找出谁购买Diaper,我们使用以下查询:

1

2

3

4

5

6

SELECT

info ->> 'customer' AS customer

FROM

orders

WHERE

info -> 'items' ->> 'product' = 'Diaper'

postgresql json opeartor在where子句中

要了解谁一次购买两种产品,我们使用以下查询:

1

2

3

4

5

6

7

8

9

SELECT

info ->> 'customer' AS customer,

info -> 'items' ->> 'product' AS product

FROM

orders

WHERE

CAST (

info -> 'items' ->> 'qty' AS INTEGER

) = 2

postgresql json运算符在where子句中强制转换

请注意,我们使用类型转换将qty字段转换为INTEGER 类型并将其与两个进行比较。

将聚合函数应用于JSON数据

我们可以应用聚合函数MINMAXAVERAGESUM等,以JSON数据。例如,以下语句返回最小数量,最大数量,平均数量和销售产品的总数量。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

SELECT

MIN (

CAST (

info -> 'items' ->> 'qty' AS INTEGER

)

),

MAX (

CAST (

info -> 'items' ->> 'qty' AS INTEGER

)

),

SUM (

CAST (

info -> 'items' ->> 'qty' AS INTEGER

)

),

AVG (

CAST (

info -> 'items' ->> 'qty' AS INTEGER

)

)

 

FROM

orders

postgresql json聚合函数

PostgreSQL JSON函数

PostgreSQL为我们提供了一些帮助您处理JSON数据的函数。

json_each函数

json_each()函数允许我们将最外层的JSON对象扩展为一组键值对。请参阅以下声明:

1

2

3

4

SELECT

json_each (info)

FROM

orders;

postgresql json json_each函数

如果要将一组键值对作为文本,则使用该  json_each_text()函数。

json_object_keys函数

要在最外层的JSON对象中获取一组键,请使用该  json_object_keys() 函数。以下查询返回列中嵌套items对象的所有键info

1

2

3

4

SELECT

json_object_keys (info->'items')

FROM

orders;

postgresql json_object_keys函数

如果你想深入挖掘,还有更多的PostgreSQL JSON函数

在本教程中,我们向您展示了如何使用PostgreSQL JSON数据类型。我们向您展示了一些最重要的JSON运算符和函数,可帮助您更有效地处理JSON数据。

相关教程

猜你喜欢

转载自blog.csdn.net/xfg0218/article/details/83182203