仮想サーファーの波乗り

仮想化エンジニアの日常

プログラミング・SNS分析・仮想通貨・自動化などに関してよく書く雑記ブログ

MySQLでデータの改行コードを確認する方法


MySQLで保存されているデータがどの改行コードで保存されているのかを確認する方法がわからず色々ググってもすぐに出てこなかったのでメモ。

MySQLにて特定のカラムに入っているデータの改行コードを確認します。


そもそも改行コードとは?

改行コードとは、文字コードの一種で文書が改行することを指示するコードのこと。行の先頭に戻ることを意味する「CR」(Carriage Return)と、改行することを意味する「LF」(Line Feed)と、それらを組み合わせて改行することを意味する「CRLF」がある。OSごとに標準で利用される改行コードが異なるため注意が必要。

▼改行コードのOS対応と16進数・10進数での表記

f:id:virtual-surfer:20180608002935p:plain


データの用意

以下のようなテーブルのカラムである時、textカラムに入っているデータの改行コードを確認します。

mysql> show columns from text;
+---------+--------------+------+-----+---------+-------+
| Field   | Type         | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+-------+
| text_id | bigint(20)   | YES  |     | NULL    |       |
| text    | varchar(150) | YES  |     | NULL    |       |
+---------+--------------+------+-----+---------+-------+
2 rows in set (0.02 sec)


改行した値を登録します。

mysql> insert into text (text_id, text) values (1, "                                                                                                                                                                                                                                                                                                                ");
Query OK, 1 row affected (0.01 sec)

これで改行コードの含まれたデータの用意は完了。


16進数でデータを表示し、データ確認

それでは、データを確認していきます。16進数でデータを表示するHEX()関数を利用します。

select HEX(カラム名) from テーブル名 where レコード指定;

以上のようにHEX関数を利用することで、16進数でデータを表示することができます。

(参考:MySQL :: MySQL 5.6 リファレンスマニュアル :: 9.1.4 16 進数リテラル


実際に試してみます。

mysql> select HEX(text) from text where text_id = 1;
+-----------+
| HEX(text) |
+-----------+
| 0A0A      |
+-----------+
1 row in set (0.00 sec)

結果として、「0A0A」と表示されているので上述した対応表から、「LF」「LF」というデータがtextカラムに保存されていることがわかります。


以上、改行コードの確認方法でした。

長文のデータが入っている場合でも、HEX関数でカラムのデータを表示して「0A」もしくは「0D」が見つかれば、それが改行コードです。


基礎からのMySQL 第3版 (基礎からシリーズ)
西沢 夢路 (著)
SBクリエイティブ 第3版 (2017/9/22)


では。