前提として下記のようなデータを持つテーブルがあります。
REC1 | REC2 | REC3 | REC4 | REC5 |
---|---|---|---|---|
あいうえお | かきくけこ | NULL | NULL | NULL |
このテーブルのデータを使い、下記のようなSQL文で各カラムの文字列を改行しながら結合します。
Oracle
1SELECT 2REC1 3|| CHR(13) || CHR(10) || REC2 4|| CHR(13) || CHR(10) || REC3 5|| CHR(13) || CHR(10) || REC4 6|| CHR(13) || CHR(10) || REC5 7FROM DUAL;
(CHR(13) || CHR(10) ←は改行コードです。)
結果は
1行目:あいうえお
2行目:かきくけこ
3行目:[空行]
4行目:[空行]
5行目:[空行]
となります。
ここで空行の3行目~5行目をなくしたいと考え、下記のようなSQLを書いてみました。
Oracle
1SELECT 2REPLACE(REC1 3|| CHR(13) || CHR(10) || REC2 4|| CHR(13) || CHR(10) || REC3 5|| CHR(13) || CHR(10) || REC4 6|| CHR(13) || CHR(10) || REC5 7, || CHR(13) || CHR(10) || CHR(13) || CHR(10) || , '') 8FROM DUAL;
こうすれば、改行コードがあった後にすぐ改行コードが来た場合は、それらが削除されるため、空行を消せるのではないかと考えたのですが、なぜか空行が1行残ってしまいました。
PL/SQLにて実装したい機能なのでIF文を使って再現しても良いのですが、コンパクトな書き方はないでしょうか..
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。