はじめに
DBのレコード中に改行が含まれていると、コンソール上で見た時に以下のようにずれて表示されてしまい、とても見づらくなります。
このようにコンソールで見る場合は「見づらい」だけで済みますが、改行が含まれるレコードをCSVとしてエクスポートした場合はCSVのフォーマットが崩れてしまうため、エクスポートした後に改行を取り除く処理を入れることになって手間がかかります。
mysql> SELECT id, name, note FROM nkojima.user;
+----+----------+----------------------------+
| id | name | note |
+----+----------+----------------------------+
| 1 | nkojima | Hello,world! |
| 2 | nkojima2 | Hello,world!
Hello,world! |
+----+----------+----------------------------+
2 rows in set (0.01 sec)
使用した環境
- OS
- CentOS-7.7
- DB
- MySQL-8.0.19
改行を取り除く方法
以下のようにREPLACE
関数を用いると、改行コードを除去した結果が簡単に得られます。
以下の例では改行コードを空文字と置き換えて単純に除去しただけですが、例えば|
など他の文字に置き換えることも可能です。
また、「あるカラムの先頭もしくは末尾に改行コードがある」というケースであれば、代わりにTRIM
関数を使うことも出来ると思いますが、汎用性が高いREPLACE
関数を覚えておけば良いと思います。
mysql> SELECT id, name, REPLACE(note, '\n', '') FROM nkojima.user;
+----+----------+---------------------------+
| id | name | REPLACE(note, '\n', '') |
+----+----------+---------------------------+
| 1 | nkojima | Hello,world! |
| 2 | nkojima2 | Hello,world! Hello,world! |
+----+----------+---------------------------+
2 rows in set (0.00 sec)