T-SQL: 文字列に改行を挿入する
T-SQL - 文字列に改行を挿入するには?
プロシージャの実行結果として得られるエラーメッセージ等の文字列に、改行を挿入したい時があるかもしれません。
今回は、文字列に改行などの制御文字を挿入する方法です。
CHAR 関数で制御文字を挿入する
CHAR は整数を引数として受け取り、対応する ASCII 文字を返してくれる組み込み関数です。
普通のアルファベットや数字にも変換できますが、主に改行などの制御文字を挿入するのに良く使われます。
よく使われる制御文字は次の 3 つです。
- CHAR(9) - タブ
- CHAR(10) - ラインフィード (LF)
- CHAR(13) - キャリッジリターン (CR)
改行を挿入したいときには、その文字列を表示するエディタやビューアー等に応じて、ラインフィード (LF) かキャリッジリターン (CR)、もしくは キャリッジリターン (CR) + ラインフィード (LF) を使います。
Windows 系はキャリッジリターン (CR) + ラインフィード (LF)、Unix 系はラインフィード (LF) かと思いますが、SQL Server Management Studio で結果をテキストで表示した場合は、どれを使っても改行が挿入されます。
例えば、test1 と test2 という文字の間にタブ、ラインフィード、キャリッジリターンの制御文字を入れて、結果をテキストで表示するとこのようになります。
SELECT 'test1' + CHAR(9) + 'test2' AS 'TAB'; SELECT 'test1' + CHAR(10) + 'test2' AS 'LF'; SELECT 'test1' + CHAR(13) + 'test2' AS 'CR'; SELECT 'test1' + CHAR(13) + CHAR(10) + 'test2' AS 'CR+LF';
[ 実行結果 ]
TAB にはタブが、LF, CR, CR+LF には改行が挿入されていますね。
ちなみに、SQL Server Management Studio のテキストの結果を Windows のノートパッドにコピーして貼り付けると次のようになります。
CR+LF のみが改行されていて、LF や CR だけでは改行されていません。
文字列に入ってしまった改行コードを探して削除したいときはこちらをご覧ください!