【MySQL】改行コードを削除しながらSELECTする方法
2019/03/01
MySQLでSELECTする時に、レコード内に含まれる「改行コード」を削除しながら抽出する方法を備忘録としてポストします。
SQLで改行コードを削除する方法
原因
とあるレコードの一覧をcsvなりエクセル表で欲しいと言われたので、以前ポストしたCSEで1,000件ごと抽出しcsv書き出ししたのですが、行数を数えるとなぜか1,200件ほどになっていました。
原因を調べると、途中で「改行」しているレコードがわんさかとあり、こりゃイカンと。
改行している原因は「改行コードが含まれているから」だと何となく理由が分かったので「消しながら抽出すれば良いんじゃない」のと"ごにょごにょ"して、欲しいデータが作成できました。
この"ごにょごにょ"する方法を解説したいと思います。
Replace関数で置換
抽出したいカラムに対し Replace 関数で改行コードの変換を指定し、改行コードを置換・削除します。
例の場合では name カラムに対して改行コードを置換するように指定しています。
1 2 3 4 5 6 7 |
SELECT id, Replace(Replace(name, Char(13), ""), Char(10), "") FROM hoge_tables WHERE delete_flg = 0 |
改行コード「Char(13)」と「Char(10)」
Replace句 にある Char(13) と Char(10) ですが、これは Char関数で、ASCIIコード10進数 に変換を行うものです。
それぞれ、
- Char(13) : CR(キャリッジリターン)
- Char(10) : LF(ラインフィード)
の意味となります。
タブ(\t)を指定したい場合は同様に char(9) を指定します。
- Char(9) : \t(タブ)