英語エンジニアのキャリア当ブログのおすすめ記事はこちら!【学生でもできる】エンジニアとして海外ノマドワークをする方法と実際に感じたことフィリピンのエンジニア留学は人生変わるかもだけどコスパは悪い件【英語+IT】ホームプログラミングSQL【SQL】MySQLでクエリ内の数値にシングルクォーテーションを使うとどうなるのか2019/08/07SHARE【SQL】MySQLでクエリ内の数値にシングルクォーテーションを使うとどうなるのかツイートシェアはてブGoogle+PocketLINEこんにちはTakumi(@ynwa_ynwa_0826)です。'1'このときの違いについて意識したことはありますか??僕はなかったです。これを意識しないとちょっとまずいことがあるとわかったのでこの記事をかいているわけです。結論から言うとシングルクォーテーションをつけるとMySQLは暗黙の型変換を行います。これが思わぬ事故を発生することになるのでその事例を紹介します。'6.81'columnAの型はdouble(6,2)となっています。tableの中にはすでにcolumnAが6.81のデータは格納されています。tableだと問題なく取得可能です)しかし!上のクエリだと一切の反応がなく、nullとなってしまっておりました。これは一体なぜ????型変換が勝手におきて想定外の動きをしている↑が想定されます。6.81だと6.81がdouble型として認識されて問題なく動くのです。このあとカラムの型をdecimalに変更すると、シングルクォーテーションをつけたものと同じ挙動をするようになりました。よってシングルクォーテーションを使うのは若干危険があるときがあります。SQLの安全性を考えるとシングルクォーテーションは必要。シングルクォーテーションをつけない場合、SQLのwhere句に直書きをすることになります。これはSQLインジェクションの脆弱性をもっていて危険が発生してしまいます。実際そのあたりを考慮したLaravelのクエリビルダの書き方は自動的にシングルクォーテーションがつくようになっています。つけないわけにもいかないのですが、、、つけると危険もあるのです。・DBの型を適当につけないこと(今回だとdoubleにするのかdecimalにするのか)ちょっとむずかしい問題でまだ未解決の感じです。コメントをキャンセルメールアドレスが公開されることはありません。*サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。ことや英語の勉強、エンジニアのことなどについてブログを書いています。