我正在使用以下命令将二进制数据(bytea)数据类型转换为字符串 encode(foo::bytea, 'base64') 但输出被分成多行:
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', '')
psql 不会将字符串拆分为多行。
psql
它是包含新行字符(ASCII 10)的字符串,并且 psql + 每行的末尾都是 psql 这是一种告诉您该值在下一行中继续的方式。
+
您可以使用未对齐模式( psql 选项 -A + ,但输出格式则不那么吸引人。
-A
您可以使用
SELECT translate(..., E'\n', '');
decode 将能够处理这样的字符串。
decode