目次
改行コードを挿入する方法
SELECT文やプロシージャなど、SQLの実行結果として改行コードを挿入したい時があると思います。
SQLの、SELECT文やプロシージャに改行コードやタブ(Tab)などの制御文字は、そのまま挿入できないため、制御文字を挿入するための関数を利用します。
この記事では、それぞれのRDB(リレーショナルデータベース)ごとに、改行コードを挿入する方法を解説していきます。
OS・ソフトによって改行コードは異なる?
改行コードは、その文字列を表示するエディタやビューアーなどや、OS(オペレーションシステム)によって、ラインフィード (LF)を使用するか、キャリッジリターン (CR) + ラインフィード (LF) を使います。
改行コードをSQLに挿入する場合は、その実行環境に合わせて、使用する改行コードを適切に選択しましょう。
T-SQLで改行コードを挿入する
最初は、SQL ServerなどのT-SQLで、SQLの実行結果に改行コードを挿入する方法を見ていきましょう。
T-SQLで改行コードを挿入する場合は、CHAR関数を使用します。厳密にCHAR関数は、指定したアスキー(ASCII)文字コードに対応する文字を得るための関数であるため、改行コード以外のアルファベットなどの文字でも使用できます。
CHAR関数で、キャリッジリターン (CR) およびラインフィード (LF)を取得するには、次のように記述します。
キャリッジリターン (CR)
CHAR(13)
ラインフィード (LF)
CHAR(10)
では、実際にSELECT文で、改行コードを実行結果に挿入するサンプルコードを見ていきましょう。
次のコードは、文字列の間に、ラインフィード (LF)とキャリッジリターン (CR) + ラインフィード (LF) を挿入するサンプルです。
▪️ ラインフィード (LF)のみの改行
SELECT 'LFのみの' + CHAR(13) + '改行です。' AS 'CR';
[実行結果]
---------------------------
LFのみの
改行です。
▪️ キャリッジリターン (CR) + ラインフィード (LF)
SELECT 'CR+LFの' + CHAR(13) + CHAR(10) + '改行です。'
[実行結果]
---------------------------
CR+LFの
改行です。
上の結果を見ると、どちらも改行されており、見た目が同じ結果のため分かり辛いですね。
SQLの実行結果を、改行コードが視覚的に見えるサクラエディタなどに貼り付けると、同じ改行でも違いが分かるでしょう。
また、キャリッジリターン (CR) + ラインフィード (LF)の改行コードしか認識しないNotepadに、SQLの実行結果を貼り付けると、ラインフィード (LF)のみの改行コードの結果では、改行が行われていません。
nvarcharで改行コードを挿入する場合は?
データ型が「nvarchar」のカラムに、改行コードを挿入する場合は、NCHAR関数を使用します。
NCHAR関数の使用方法は、前述のCHAR関数と同じで、引数に文字コードを指定します。
キャリッジリターン (CR)
NCHAR(13)
ラインフィード (LF)
NCHAR(10)
Oracle Database SQLで改行コードを挿入する
次は、Oracle Database SQLで、SQLの実行結果に改行コードを挿入する方法を見ていきましょう。
Oracle Databaseで改行コードを挿入するには、CHR関数を使用します。こちらもT-SQLのCHAR関数同様に、指定したアスキー(ASCII)文字コードに対応する文字を得るための関数です。
CHR関数で、キャリッジリターン (CR) およびラインフィード (LF)を取得するには、次のように記述します。
キャリッジリターン (CR)
CHR(13)
ラインフィード (LF)
CHR(10)
実際にOracle Database SQLで、改行コードを実行結果に挿入するサンプルコードを見ていきましょう。
▪️ ラインフィード (LF)のみの改行
SELECT 'LFのみの' + CHR(13) + '改行です。' AS 'CR' FROM DUAL;
[実行結果]
---------------------------
LFのみの
改行です。
▪️ キャリッジリターン (CR) + ラインフィード (LF)
SELECT 'CR+LFの' + CHR(13) + CHR(10) + '改行です。' FROM DUAL;
[実行結果]
---------------------------
CR+LFの
改行です。
MySQLで改行コードを挿入する
次は、MySQLで改行コードを挿入する方法を見ていきましょう。
MySQLで改行コードを挿入するには、特殊文字の\r\nを使用します。OracleやSQL Serverなどとは、改行コードの設定方法が異なるので、注意が必要です。
MySQLでのキャリッジリターン (CR)、ラインフィード (LF)の書き方は次のとおりです。
キャリッジリターン (CR)
\r
ラインフィード (LF)
\n
実際にMySQLで、改行コードを実行結果に挿入するサンプルコードを見ていきましょう。
▪️ ラインフィード (LF)のみの改行
SELECT 'LFのみの\n改行です。' AS 'CR';
[実行結果]
---------------------------
LFのみの
改行です。
▪️ キャリッジリターン (CR) + ラインフィード (LF)
SELECT 'CR+LFの\r\n改行です。';
[実行結果]
---------------------------
CR+LFの
改行です。
PostgreSQLで改行コードを挿入する
次は、PostgreSQLで改行コードを挿入する方法を見ていきましょう。
PostgreSQLもMySQLと同様に、で改行コードを挿入するには、特殊文字の\r\nを使用します。
キャリッジリターン (CR)
\r
ラインフィード (LF)
\n
実際にPostgreSQLで、改行コードを実行結果に挿入するサンプルコードを見ていきましょう。
▪️ ラインフィード (LF)のみの改行
SELECT 'LFのみの\n改行です。' AS 'CR';
[実行結果]
---------------------------
LFのみの
改行です。
▪️ キャリッジリターン (CR) + ラインフィード (LF)
SELECT 'CR+LFの\r\n改行です。';
[実行結果]
---------------------------
CR+LFの
改行です。
SQLiteで改行コードを挿入する
最後は、SQLiteで改行コードを挿入する方法を見ていきましょう。
SQLiteで改行コードを挿入するには、SQL Serverと同様にchar関数を使用します。charは指定したアスキー(ASCII)文字コードに対応する文字を得るための関数で、改行の文字コード指定して改行を挿入します。
SQLiteのchar関数で、キャリッジリターン (CR) およびラインフィード (LF)を取得するには、次のように記述します。
キャリッジリターン (CR)
char(13)
ラインフィード (LF)
char(10)
まとめ
SQLで改行コードを挿入する方法を、RDB(リレーショナルデータベース)別に見てきました。今回のように、SQLはデータベース毎に、微秒に仕様が違うため、しっかり把握しておきましょう。
SQLiteのchar関数は、引数に複数の値を指定できるため、キャリッジリターン (CR)とラインフィード (LF)の2つの制御文字を、char(13, 10)のように指定することで、1回の呼び出しで同時に取得できます。