MySQLで保存されているデータがどの改行コードで保存されているのかを確認する方法がわからず色々ググってもすぐに出てこなかったのでメモ。
MySQLにて特定のカラムに入っているデータの改行コードを確認します。
そもそも改行コードとは?
改行コードとは、文字コードの一種で文書が改行することを指示するコードのこと。行の先頭に戻ることを意味する「CR」(Carriage Return)と、改行することを意味する「LF」(Line Feed)と、それらを組み合わせて改行することを意味する「CRLF」がある。OSごとに標準で利用される改行コードが異なるため注意が必要。
▼改行コードのOS対応と16進数・10進数での表記
データの用意
以下のようなテーブルのカラムである時、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を利用する際に知っておきたいこと、ノウハウがまとめられている奥野さんの本。MySQLしっかり学びたいなら読みたい。
そもそもRDBを実運用する上でどんなことに注意する必要があるのか?を具体的な失敗ケースとともに解説してくれている。初心者向けでわかりやすい。
では。