postgres查询的输出格式不一致

8xiog9wr  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(719)

我在postgres数据库中查询3个varchar(n)字段,如下所示:

Select ("Title","Author","Isbn") from public."Book" Where 1=1

查询的输出是一个包含3个字符串的元组。但是,输出的格式有时在记录之间不一致。请注意查询的输出:

请注意第40行和第41/42行之间第一个元素的差异。第40行的第一个元素是“革命之路”(用双引号括起来)。第41行的第一个元素是neuromancer(没有用引号括起来)。同样的现象也发生在查询集中的其他地方。
我不知道为什么第一个元素有时在查询返回的方式上不一致。这不是个人记录本身的问题。还有什么问题吗?

lkaoscv7

lkaoscv71#

结果是正确的。在这种输出格式中,当字符串有空格或某些特殊字符时,postgre使用引号:

postgres=# select row('ahoj', 'ahoj svete', 'ahoj,svete', '"ahoj svete"');
┌───────────────────────────────────────────────────┐
│                        row                        │
╞═══════════════════════════════════════════════════╡
│ (ahoj,"ahoj svete","ahoj,svete","""ahoj svete""") │
└───────────────────────────────────────────────────┘
(1 row)

如果您不想要复合值的输出格式,请不要使用 row 施工单位:

postgres=# select 'ahoj', 'ahoj svete', 'ahoj,svete', '"ahoj svete"';
┌──────────┬────────────┬────────────┬──────────────┐
│ ?column? │  ?column?  │  ?column?  │   ?column?   │
╞══════════╪════════════╪════════════╪══════════════╡
│ ahoj     │ ahoj svete │ ahoj,svete │ "ahoj svete" │
└──────────┴────────────┴────────────┴──────────────┘
(1 row)

相关问题