mysqlでのリテラル指定
最近意識してなかったのでメモ
mysqlの場合はこのあたりのマニュアルに書いてあります
MySQL :: MySQL 5.1 リファレンスマニュアル :: 8.1 リテラル値
引用符で囲むと文字リテラル指定となる
文字リテラルとする場合、↓のように引用符でくくると文字リテラルとして指定できます。
'a string' "another string"
ただこれ
'1' "1"
てやっても、計算とかするとき、数値リテラルに自動で変換されるみたいです。
このあたりの記事に書いてある
[SQLインジェクション][SQL]: SQLの暗黙の型変換はワナがいっぱい - 徳丸浩の日記(2009-09-24)
SQLの数値リテラルをシングルクォートでくくる手法について - とある技術屋の戯言
数値を引用符で囲った場合
「暗黙の型変換」が行われ、こんな変換ロジックとなる
#数値ではない文字がきられる SELECT * FROM test WHERE id = '1あ'; ↓ SELECT * FROM test WHERE id = 1;
#数値じゃなかったら0になる SELECT * FROM test WHERE id = 'hoge'; ↓ SELECT * FROM test WHERE id = 0;
ちなみに数値の部分をシングルクォーテーションなど、引用符でくくると、mysqlでは一応SQLインジェクション対策にはなる