SQLで指定した数のスペースを出力する

レコードの一部の列に大量のスペースを出力する必要があって調べてみましたが、OracleにはVBのspace関数のようなものは用意されていないようですね。単純に

select '          ' from dual;

みたいな書き方をすると、スペースの数が多いときに、コーディング規約の折り返し文字数にひっかかったり、そのためにエスケープさせたりと大変です。なので、数を明示して指定する方法を考えます。

select CAST(' ' AS CHAR(1000)) from dual;

これだとCHARの最大文字列長である2000バイトは超えられません。そこで次のようにしてみました。

select LPAD(' ', 1000, ' ') from dual;

CASTを使う方法もCHARではなくVARCHAR2に変換すれば2000バイト超えられますね。ちなみに、どっちがパフォーマンスいいかは調べていません。