PostgreSQLの検索結果から改行コードを置換したい

概要

PostgreSQLでSELECT文の結果をExcelのシートへ貼り付けているときに、SELECT文の結果に改行文字が含められているために行がずれることがあった。

SELECT
   *
FROM
  テーブル名

上記のSELECT文の結果

id 補足事項
1 〇〇さんに連携お願いします。\n緊急時には……
2 ××さんにから連絡があります。\n内容は……

Excelのシートへ貼り付けた結果

id 補足事項
1 〇〇さんに連携お願いします。
緊急時には……
2 ××さんにから連絡があります。
内容は……

解決策

www.postgresql.jp

PostgreSQLregexp_replace関数があるので、正規表現を使ってSELECT文の結果にある改行文字を置換する。

regexp_replace(項目名, 置換前, 置換後, フラグi or フラグg)

今回の場合
regexp_replace(項目名, '\r\n|\n|\r', '<改行>', 'g')

フラグについては下記の通り

フラグiは大文字小文字を区別したマッチングを指定する一方、フラグgは、最初にマッチしたもののみではなく、それぞれマッチした部分文字列の置換を指定します。

実行結果

SELECT
   regexp_replace(項目名, '\r\n|\n|\r', '<改行>', 'g')
FROM
  テーブル名

上記のSELECT文の結果

id 補足事項
1 〇〇さんに連携お願いします。<改行>緊急時には……
2 ××さんにから連絡があります。<改行>内容は……

Excelのシートへ貼り付けた結果

id 補足事項
1 〇〇さんに連携お願いします。<改行>緊急時には……
2 ××さんにから連絡があります。<改行>内容は……