Как напечатать postgres вывод таблицы, чтобы она могла различать guish между пустой строкой и нулем - PullRequest
0 голосов
/ 07 апреля 2020

есть ли способ настроить psql или передать какой-либо параметр при выполнении запроса, чтобы распечатать другое значение для нуля и для пустой строки? В настоящее время он показывает пустой для обоих.

Например, у меня есть таблица с таким содержанием:

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)

При этом я не могу сказать, является ли имя пользователя пустой строкой или нулевым. В этом случае имя пользователя - ноль, но пароль - пустая строка.

Я пытался использовать \x on, но это то же самое.

Конечно, я мог бы сделать некоторую объединение, но это слишком много, если мне нужно сделать это для каждого столбца.

Ответы [ 2 ]

2 голосов
/ 07 апреля 2020

В psql вы можете сделать это с параметром конфигурации null, который можно изменить с помощью \pset

postgres=# \pset null '<null>'
Null display is "<null>".
postgres=# select null as c1, '' as c2;
   c1   | c2
--------+----
 <null> |

Если вы хотите, чтобы этот параметр был постоянным, вы можете поставить команду \pset в .psqlr c

0 голосов
/ 07 апреля 2020

Вы можете использовать coalesce() для замены значения NULL чем-то другим:

select coalesce(username, '<null user>') as username,
       coalesce(password, '<null password>') as password

Или, если вы хотите включить третье значение для пустых строк, используйте case:

select (case when username is null then '<null user>'
             when username = '' then '<empty user>'
             else username
        end)

Конечно, если бы пароль был <null password>', тогда он выглядел бы как значение NULL.

Или вы можете заключить значения в кавычки:

select '"' || username || '"' as username

Оператор || возвращает NULL, если значение равно NULL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...