なぜこうなる(mysql で !を重ねたときの処理)
mysql> select version(), !1,!!1,!!!1,!!!!1,!!!!!1,!!!!!!1;
+————+—-+—–+——+——-+——–+———+
| version() | !1 | !!1 | !!!1 | !!!!1 | !!!!!1 | !!!!!!1 |
+————+—-+—–+——+——-+——–+———+
| 5.1.47-log | 0 | 0 | 1 | 1 | 0 | 0 |
+————+—-+—–+——+——-+——–+———+
1 row in set (0.00 sec)
select version(), !1,!!1,!!!1,!!!!1,!!!!!1,!!!!!!1;
+————+—-+—–+——+——-+——–+———+
| version() | !1 | !!1 | !!!1 | !!!!1 | !!!!!1 | !!!!!!1 |
+————+—-+—–+——+——-+——–+———+
| 5.0.67-log | 0 | 1| 0 | 1 | 0 | 1 |
+————+—-+—–+——+——-+——–+———+
1 row in set (0.00 sec)
bugだったよ。 http://bugs.mysql.com/bug.php?id=55477 演算子の次の文字も演算子の場合!=とか<=みたいな2文字演算子かもしれないから取得するんだけど、!!とか!<みたいに意味のないものになった場合、1文字目だけ利用して2文字目をどっかやっちゃうらしい。
ナオセ
コメントはまだありません。