[Решено] Postgresql: Cмещает имена столбцов в консоли

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

Ответить
Аватара пользователя
UnixNoob
Сообщения: 1380
ОС: Slackware

[Решено] Postgresql: Cмещает имена столбцов в консоли

Сообщение UnixNoob »

Приветствую. Может быть кто-то сталкивался с кривым выводом postgresql и знает как исправить, с MariaDB таких проблем не наблюдается. Про опцию \x знаю, но вывод не очень удобный.
При вызове

Код: Выделить всё

SELECT prod_id, prod_price, prod_name FROM Products ORDER BY prod_price, prod_name;
получается такое

Код: Выделить всё

 prod_id   | prod_price |                                                                                                                            prod_name
------------+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 BNBG02     |       3.49 | Bird bean bag toy
 BNBG01     |       3.49 | Fish bean bag toy
 BNBG03     |       3.49 | Rabbit bean bag toy
С опцией \a

Код: Выделить всё

prod_id|prod_price|prod_name
BNBG02    |3.49|Bird bean bag toy
BNBG01    |3.49|Fish bean bag toy
BNBG03    |3.49|Rabbit bean bag toy
Последний раз редактировалось UnixNoob 20.02.2022 15:49, всего редактировалось 1 раз.
"Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные"
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2658
ОС: Gentoo

Re: Postgresql: Cмещает имена столбцов в консоли

Сообщение ormorph »

Может в какой то строке целая куча пробелов в колонке prod_name? Либо какая то строка в этой колонке с очень длинным текстом.
У себя на postgresq -14.1 такого не наблюдаю. Такое возможно если есть длинная строка в колонке. Но на программный вывод php или c++ такое не должно влиять.
Спасибо сказали:
Аватара пользователя
UnixNoob
Сообщения: 1380
ОС: Slackware

Re: Postgresql: Cмещает имена столбцов в консоли

Сообщение UnixNoob »

ormorph
А как это проверить?

Код: Выделить всё

select prod_name from products;
                                                                                                                            prod_name                                                                                                                            
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 8 inch teddy bear                                                                                                                                                                                                                                              
 12 inch teddy bear                                                                                                                                                                                                                                             
 18 inch teddy bear                                                                                                                                                                                                                                             
 Fish bean bag toy                                                                                                                                                                                                                                              
 Bird bean bag toy                                                                                                                                                                                                                                              
 Rabbit bean bag toy                                                                                                                                                                                                                                            
 Raggedy Ann                                                                                                                                                                                                                                                    
 King doll                                                                                                                                                                                                                                                      
 Queen doll                                                                                                                                                                                                                                                     
(9 rows)

"Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные"
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2658
ОС: Gentoo

Re: Postgresql: Cмещает имена столбцов в консоли

Сообщение ormorph »

Ну попробуйте каждую строчку проверять:

Код: Выделить всё

select prod_name from products where prod_name='Raggedy Ann'
Там где лишние проблемы поиск не должен проходить.
А так по идее можно просто в php добавить вывод в кавычках, чтобы сразу увидеть проблемы:
информация но думаю что это вы и так знаете.
Оператором конкатенации выступает точка, Это чтобы оформить вывод в команде print.
Спасибо сказали:
Аватара пользователя
UnixNoob
Сообщения: 1380
ОС: Slackware

Re: Postgresql: Cмещает имена столбцов в консоли

Сообщение UnixNoob »

ormorph, после проверки пробелов лишних нет. Как вы думаете, может ли быть вызвано это смещением тем, что для столбца указана возможная длинна символов - 255?
Да, похоже дело в этом, если не было каких-то перемен:
Так как поля с этим типом имеют фиксированный размер (не больше / не меньше заданного), то, при сохранении в таблицу у всех строк, длина которых меньше этого размера, оставшееся пустое место в конце строки заполняется пробелами. Поэтому при сохранении значения '123' в поле с типом char(6) в таблицу реально сохранится '123___'. Это может стать неприятным сюрпризом.

При операциях сравнения полей с типом char(n) пробелы в конце строки игнорируются.
а у меня тип указан как character(255)
При использовании выборки с использованием метасимволов, без % в конце строки, команда ничего не находила.
"Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные"
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2658
ОС: Gentoo

Re: Postgresql: Cмещает имена столбцов в консоли

Сообщение ormorph »

UnixNoob писал:
20.02.2022 14:37
а у меня тип указан как character(255)
А ну тогда вполне понятно почему, посмотрите сюда. Это тип фиксированной длины, по этому такой вывод. У меня прописано varchar(255), с этим типом такого не происходит.
Спасибо сказали:
Ответить