Postgresql 为什么使用Postgres JSON列类型?

Postgresql 为什么使用Postgres JSON列类型?,postgresql,Postgresql,JSON列类型接受无效的JSON 乙二醇 [1,2,3]无需关闭即可插入{} JSON和字符串之间有什么区别吗?而[1,2,3]是有效的JSON,正如zerkms在评论中所述,回答主要问题:JSON和字符串之间有什么区别吗? 答案是肯定的。一组全新的查询操作、函数等适用于json或jsonb列,而这些列不适用于text(或相关类型)列 例如,对于text列,您需要使用正则表达式和相关的字符串函数来解析字符串(或自定义函数),而对于json或jsonb,则存在一组单独的查询运算符,它们在json的

JSON列类型接受无效的JSON

乙二醇
[1,2,3]
无需关闭即可插入
{}


JSON和字符串之间有什么区别吗?

[1,2,3]
是有效的JSON,正如zerkms在评论中所述,回答主要问题:JSON和字符串之间有什么区别吗?

答案是肯定的。一组全新的查询操作、函数等适用于
json
jsonb
列,而这些列不适用于
text
(或相关类型)列

例如,对于
text
列,您需要使用正则表达式和相关的字符串函数来解析字符串(或自定义函数),而对于
json
jsonb
,则存在一组单独的查询运算符,它们在json的结构化特性中工作

从中,给定以下JSON:

医生接着说:

我们将这些文档存储在名为api的表中,在名为 jdoc。如果在此列上创建了GIN索引,则 以下内容可以使用该索引:

这允许您查询
jsonb
(或
json
)字段,这与仅查询
text
或相关字段非常不同

下面是一些示例,它提供了一些查询运算符和函数


基本上,如果您有要作为JSON数据处理的JSON数据,那么最好将列指定为
JSON
jsonb
(您选择哪一个取决于您是将其分别存储为纯文本还是二进制)。

[1,2,3]
是有效的JSON,正如zerkms在评论中指出的,为了回答主要问题:JSON和字符串之间有什么区别吗?

答案是肯定的。一组全新的查询操作、函数等适用于
json
jsonb
列,而这些列不适用于
text
(或相关类型)列

例如,对于
text
列,您需要使用正则表达式和相关的字符串函数来解析字符串(或自定义函数),而对于
json
jsonb
,则存在一组单独的查询运算符,它们在json的结构化特性中工作

从中,给定以下JSON:

医生接着说:

我们将这些文档存储在名为api的表中,在名为 jdoc。如果在此列上创建了GIN索引,则 以下内容可以使用该索引:

这允许您查询
jsonb
(或
json
)字段,这与仅查询
text
或相关字段非常不同

下面是一些示例,它提供了一些查询运算符和函数


基本上,如果您有要作为JSON数据处理的JSON数据,那么最好将列指定为
JSON
jsonb
(您选择哪一个取决于您是将其分别存储为纯文本还是二进制)。

上述数据可以以文本形式存储,但是JSON数据类型有一个优势,您可以在这些列中应用JSON规则。有几个函数是JSON指定的,不能用于文本字段


上述数据可以以文本形式存储,但JSON数据类型的优势在于您可以在这些列中应用JSON规则。有几个函数是JSON指定的,不能用于文本字段


[1,2,3]
是有效的JSON。我认为它需要包含{},必须仅用于http请求
{}
用于JSON对象,
[]
用于JSON数组。这是两种不同的JSON类型。如果您存储的唯一内容是整数数组,那么
int[]
将是更好的选择。
[1,2,3]
是有效的JSON。我认为它需要包含{},必须仅用于http请求
{}
用于JSON对象,
[]
用于JSON数组。这是两种不同的JSON类型。如果您只存储整数数组,那么
int[]
将是更好的选择。
{
    "guid": "9c36adc1-7fb5-4d5b-83b4-90356a46061a",
    "name": "Angela Barton",
    "is_active": true,
    "company": "Magnafone",
    "address": "178 Howard Place, Gulf, Washington, 702",
    "registered": "2009-11-07T08:53:22 +08:00",
    "latitude": 19.793713,
    "longitude": 86.513373,
    "tags": [
        "enim",
        "aliquip",
        "qui"
    ]
}
-- Find documents in which the key "company" has value "Magnafone"
SELECT jdoc->'guid', jdoc->'name' FROM api WHERE jdoc @> '{"company": "Magnafone"}';