フィールドと値の 2 つの指定されたパラメーターから SQL クエリを生成するスクリプトがあります。最終的に、次のようなものが生成されます。
SELECT * FROM table WHERE <field> IN <value>;
これまでのところ、深刻なことは何もありません。しかし、ここで想像してみてください。文字列を含むフィールドがあり、数字のみで構成される場合もあれば、そうでない場合もあります。そして今、あなたは123の値を与えます:
SELECT string FROM table WHERE string = 123;
MySQL Autocasting により、このクエリは 123 が含まれる行、または 123 で始まる文字列になります。この種の部分文字列の自動キャストを無効にする方法はありますか? 指定された値 (キャストかどうか)を正確に含む結果のみを取得したい
単純なテスト SQL この小さな選択は問題を示しています。
SELECT '123abc' IN (123, 234, 'xyz');
注: 私の SQL はスクリプトで生成されているため、単純に値を文字列にキャストしたり、大文字で囲んだりすることはできません。理想的な解決策は、型に関係なく、演算子を操作してequalsを返すことだけです。