代码之家  ›  专栏  ›  技术社区  ›  MacUsers

是否停止PostgreSQL在多行中拆分值?

  •  0
  • MacUsers  · 技术社区  · 7 年前

    我正在使用以下命令将二进制数据(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 回复  |  直到 7 年前
        1
  •  5
  •   Laurenz Albe    7 年前

    psql 不会将字符串拆分为多行。

    它是包含新行字符(ASCII 10)的字符串,并且 psql + 每行的末尾都是 psql 这是一种告诉您该值在下一行中继续的方式。

    您可以使用未对齐模式( psql 选项 -A + ,但输出格式则不那么吸引人。

    您可以使用

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

    decode 将能够处理这样的字符串。

    推荐文章