Остановить PostgreSQL от разделения значения в несколько строк? - PullRequest
0 голосов
/ 10 декабря 2018

Я преобразую тип данных двоичных данных (bytea) в строку, используя encode(foo::bytea, 'base64'), но выходные данные разделяются на несколько строк:

-[ RECORD 1 ]-+-----------------------------------------------------------------------
 req_id       | 132675
 b_string     | d4IF4jCCBd4GCSqGSIb3DQEHAqCCBc8wggXLAgEDMQ0wCwYJBAIBMIGYBgZngQgBAQGg+
              | gY0EgYowgYcCAQAwCwYJYIZIAQAwCwYJYIZIAWUDBAIHUwUdH0JybzpY2evf+v9Xg86b+
              | HSGTGYBIb/QwJQIBAgQg1M6/cJ+S39XY1lm43oenxJNLrYcc3hVw7fgwJQIBDgQgIAil+
              | 1JnYbdS0p4pK07kMkb/dbMcxryx6mqbLTzx+YJ6gggQbMI2gAwIBAgIESS7vwTAKBggq+
              | LUxRjUXbTgfGwUKOFwemsc4KXbsLZ13MkbNfAQ==

Как вместо этого получить одну строку?

ОБНОВЛЕНИЕ: основано на решении @ LaurenzAlbe

Просто для полноты, это то, что я в итоге сделал, дало мне желаемый результат:

translate(encode(foo::bytea, 'base64'), E'\n', '')

1 Ответ

0 голосов
/ 10 декабря 2018

psql не разбивает вашу строку на несколько строк.

Это строка, содержащая символы новой строки (ASCII 10), и psql отображает их точно.+ в конце каждой строки - это psql способ сообщить вам, что значение продолжается в следующей строке.

Вы можете использовать режим без выравнивания (psql опция -A), чтобы избавиться от +, но выходной формат менее привлекателен, чем.

Вы можете избавиться от новых строк в строке с

SELECT translate(..., E'\n', '');

decode будетспособен обрабатывать такую ​​строку.

...