PEAR::DBのプレースホルダー「!」の注意点

SQL文のプリペアドステートメントにある「!(エクスクラメーション)」

これは以下参照サイトにあるようにプレースホルダのようだが、


プレースホルダには以下の3種類があります。

? --- クォート処理する文字列
! --- クォート処理しない文字列
& --- バイナリデータを登録するためにファイル名

ここで注意

「!」はSQLにおいても否定の演算子の意味をもつ。


<>, !=

等しくない :

mysql> SELECT '.01' <> '0.01';
-> 1
mysql> SELECT .01 <> '0.01';
-> 0
mysql> SELECT 'zapp' <> 'zappp';
-> 1

おそらく構文上、演算子に前置される場合などは除外しているのだろうけど、混同しやすい。