【MySQL】sql_modeの変更

MySQLにはsql_modeっていう環境変数があってこれを設定してあげると他のベンダーのDBみたいな動作してくれる

例えば未設定時には


mysql> SHOW VARIABLES LIKE 'sql_mode'\G
Variable_name: sql_mode
Value:
1 row in set (0.00 sec)

mysql> SELECT ('a' || 'b' || 'c') as marge FROM DUAL;

marge
0

という動作をするんだけど

mysql> set @@sql_mode='ORACLE';
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW VARIABLES LIKE 'sql_mode'\G
Variable_name: sql_mode
Value: PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER
1 row in set (0.00 sec)

ってするとさっきのSQL

mysql> SELECT ('a' || 'b' || 'c') as marge FROM DUAL;

marge
abc

1 row in set (0.00 sec

ってなる

便利ですね〜

多分いろいろ挙動が変わっていると思うので調査