我有一个从两个给定参数生成 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,无论是什么类型。