首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何打印postgres表输出,以便区分空字符串和null

如何打印postgres表输出,以便区分空字符串和null
EN

Stack Overflow用户
提问于 2020-04-07 18:46:43
回答 2查看 1.2K关注 0票数 7

有没有办法配置psql或在查询时传入一些参数,打印出空值和空字符串的不同值?目前,两者都显示为空。

例如,我有一个包含以下内容的表:

代码语言:javascript
运行
复制
adventure=# select * from account
adventure-# ;
 user_id | username | password | email |         created_on         |         last_login         
---------+----------+----------+-------+----------------------------+----------------------------
       1 |          |          |       | 2020-04-07 10:30:08.836098 | 2020-04-07 10:30:08.836098
(1 row)

这样,我就不能判断username是空字符串还是null。在本例中,用户名为空,但密码为空字符串。

我试过使用\x on,但都是一样的。

当然,我可以做一些合并,但是如果我需要对每一列都这样做,那就有点太多了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-07 18:51:24

psql中,您可以使用配置选项null执行此操作,该选项可以使用\pset进行更改

代码语言:javascript
运行
复制
postgres=# \pset null '<null>'
Null display is "<null>".
postgres=# select null as c1, '' as c2;
   c1   | c2
--------+----
 <null> |

如果您想永久使用该选项,可以将\pset命令放入.psqlrc

票数 14
EN

Stack Overflow用户

发布于 2020-04-07 18:48:11

您可以使用coalesce()NULL值替换为其他值:

代码语言:javascript
运行
复制
select coalesce(username, '<null user>') as username,
       coalesce(password, '<null password>') as password

或者,如果要为空字符串包含第三个值,请使用case

代码语言:javascript
运行
复制
select (case when username is null then '<null user>'
             when username = '' then '<empty user>'
             else username
        end)

当然,如果密码是<null password>',那么它看起来就像NULL值。

或者,您可以将值括在引号中:

代码语言:javascript
运行
复制
select '"' || username || '"' as username

如果值为NULL,则||运算符返回NULL

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61078256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档