首页 > 解决方案 > Postgresql - 内部列标题显示为“?column?”

问题描述

我创建了一个表:

CREATE TABLE mail(id UUID UNIQUE PRIMARY KEY DEFAULT gen_random_uuid(), mailbox VARCHAR(32), mail jsonb);

这是将数据插入表中的方式:

INSERT INTO mail(mailbox, mail) VALUES ('sent','{"to":{"name":"Shandra Rheam","email":"srheam0@myspace.com"},"from":{"name":"CSE183 Student","email":"cse183student@ucsc.edu"},"received":"2020-11-17T23:17:19Z","sent":"2020-11-14T17:09:17Z"}');

如果我尝试:

SELECT id, mail->\'to\' FROM mail

我明白了:

{
  "id": "d0c7e73e-20ab-4c0e-b4fd-f687ec082eb6",
  "?column?": {
    "name": "Shandra Rheam",
    "email": "srheam0@myspace.com"
  }
}

为什么该列显示为?列?而不是“到”?

标签: node.jspostgresql

解决方案


您的列不是列,而是表达式。如果要为该表达式命名,则需要使用列别名

select id, mail -> 'to' as "to"
from mail;

推荐阅读