Postgresql Postgres是否不必要地再次将JSON键从jsonb列类型转换为文本?
我使用下面的查询在postgres中创建了一个Postgresql Postgres是否不必要地再次将JSON键从jsonb列类型转换为文本?,postgresql,Postgresql,我使用下面的查询在postgres中创建了一个视图 SELECT JSON_BUILD_OBJECT( 'street', t.data->'address'->>'street', 'area', t.data->'address'->>'area', 'displayLocation', t.data->'address'->>'display
视图
SELECT
JSON_BUILD_OBJECT(
'street', t.data->'address'->>'street',
'area', t.data->'address'->>'area',
'displayLocation', t.data->'address'->>'display_location',
'postalCode', t.data->'address'->>'postal_code'
) AS address
FROM true_humans t;
创建视图后,我在psql中使用命令\d+true\u humans\u view
查看视图的查询。
以下是\d+
命令的结果
SELECT
json_build_object(
'street', (t.data -> 'address'::text) ->> 'street'::text,
'area', (t.data -> 'address'::text) ->> 'area'::text,
'displayLocation', (t.data -> 'address'::text) ->> 'display_location'::text,
'postalCode', (t.data -> 'address'::text) ->> 'postal_code'::text
) AS address
FROM true_humans t;
Postgres为什么要做“地址”::文本这一类型转换?请帮助我了解博士后的行为 综合评论中对该问题的回答:
你认为字面上的“地址”是什么类型的?你认为文字“2020-03-31”是什么类型?如果您想弄清楚每种类型是什么类型,有什么方便的方法来指定它
引用的文本不能同时是两种类型,是吗?它的类型实际上是“未知引用的事物”,它将根据上下文被解释为特定类型。在这种情况下,您知道您想要文本,PostgreSQL也是如此。这是明确的
谢谢你,Richard Huxton。从评论中综合回答这个问题:
你认为字面上的“地址”是什么类型的?你认为文字“2020-03-31”是什么类型?如果您想弄清楚每种类型是什么类型,有什么方便的方法来指定它
引用的文本不能同时是两种类型,是吗?它的类型实际上是“未知引用的事物”,它将根据上下文被解释为特定类型。在这种情况下,您知道您想要文本,PostgreSQL也是如此。这是明确的
谢谢,Richard Huxton。你认为字面的
地址是什么类型的?您认为文字'2020-03-31'
是什么类型?如果你想弄清楚每一个都是什么类型,那么有什么方便的方法来指定它呢?“Postgres不必要地是类型转换吗”-不,不是t@RichardHuxton“address”是一个字符串,“2020-03-31”可以是DateTime。但是所有的键都应该是字符串,不是吗?所以为什么要再次进行类型转换,我仍然不清楚。引用的文本不能同时是两种类型,不是吗?它的类型实际上是“未知引用的事物”,它将根据上下文被解释为特定类型。在这种情况下,您知道您需要文本,PostgreSQL也是如此。这是明确的。你认为字面的“地址”
是什么类型?您认为文字'2020-03-31'
是什么类型?如果你想弄清楚每一个都是什么类型,那么有什么方便的方法来指定它呢?“Postgres不必要地是类型转换吗”-不,不是t@RichardHuxton“address”是一个字符串,“2020-03-31”可以是DateTime。但是所有的键都应该是字符串,不是吗?所以为什么要再次进行类型转换,我仍然不清楚。引用的文本不能同时是两种类型,不是吗?它的类型实际上是“未知引用的事物”,它将根据上下文被解释为特定类型。在这种情况下,您知道您需要文本,PostgreSQL也是如此。这是明确的。