Приветствую. Может быть кто-то сталкивался с кривым выводом postgresql и знает как исправить, с MariaDB таких проблем не наблюдается. Про опцию \x знаю, но вывод не очень удобный.
При вызове
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
Может в какой то строке целая куча пробелов в колонке prod_name? Либо какая то строка в этой колонке с очень длинным текстом.
У себя на postgresq -14.1 такого не наблюдаю. Такое возможно если есть длинная строка в колонке. Но на программный вывод php или c++ такое не должно влиять.
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)
"Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные"
select prod_name from products where prod_name='Raggedy Ann'
Там где лишние проблемы поиск не должен проходить.
А так по идее можно просто в php добавить вывод в кавычках, чтобы сразу увидеть проблемы: информация но думаю что это вы и так знаете.
Оператором конкатенации выступает точка, Это чтобы оформить вывод в команде print.
ormorph, после проверки пробелов лишних нет. Как вы думаете, может ли быть вызвано это смещением тем, что для столбца указана возможная длинна символов - 255?
Да, похоже дело в этом, если не было каких-то перемен:
Так как поля с этим типом имеют фиксированный размер (не больше / не меньше заданного), то, при сохранении в таблицу у всех строк, длина которых меньше этого размера, оставшееся пустое место в конце строки заполняется пробелами. Поэтому при сохранении значения '123' в поле с типом char(6) в таблицу реально сохранится '123___'. Это может стать неприятным сюрпризом.
При операциях сравнения полей с типом char(n) пробелы в конце строки игнорируются.
а у меня тип указан как character(255)
При использовании выборки с использованием метасимволов, без % в конце строки, команда ничего не находила.
"Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные"
А ну тогда вполне понятно почему, посмотрите сюда. Это тип фиксированной длины, по этому такой вывод. У меня прописано varchar(255), с этим типом такого не происходит.