いっぽんの猟銃のむこうに (DAIZOじいさんとGun)

ヌルめの技術メモとか。フリーランスやってます (http://acez.jp/)

CHAR型のカラムにスペースを含む文字列を入れるとトリムされる

mysql > CREATE TABLE hoge ( col1 char(10)) ;

みたいな char(10) hoge とかのレコードに対して

mysql > INSERT INTO hoge (col1) value ('0       ');

としても

mysql> SELECT length(col1) from hoge;
+--------------+
| length(col1) |
+--------------+
|            1 |
+--------------+

とかなってしまい、後ろのスペースがtrimされてしまう。
http://dev.mysql.com/doc/refman/5.1-olh/ja/char.html

対策としては、my.cnfに

[mysqld]
sql-mode="PAD_CHAR_TO_FULL_LENGTH" 

と書いて再起動すればよい。

ただしver5.1以降でないと対応してないので、
CentOSのデフォルトMySQLとかの場合は注意。