概要
PostgreSQLでSELECT文の結果をExcelのシートへ貼り付けているときに、SELECT文の結果に改行文字が含められているために行がずれることがあった。
SELECT * FROM テーブル名
上記のSELECT文の結果
id | 補足事項 |
1 | 〇〇さんに連携お願いします。\n緊急時には…… |
2 | ××さんにから連絡があります。\n内容は…… |
Excelのシートへ貼り付けた結果
id | 補足事項 |
1 | 〇〇さんに連携お願いします。 |
緊急時には…… | |
2 | ××さんにから連絡があります。 |
内容は…… |
解決策
PostgreSQLにregexp_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 | ××さんにから連絡があります。<改行>内容は…… |