假设我有一个查询
SELECT * FROM table WHERE x > y;
其中“y”是用户输入值。我想把y括在引号中。据我测试,当添加引号时,查询正常工作。是否定义了行为?是否已知会导致效率下降?
请注意,查询是为简单起见而编写的示例。此外,这不是尝试处理SQL注入。
答案 0 :(得分:3)
如果您要与之比较的字段是数字字段,即int
,那么所有可能的组合必须在mysql中工作
select * from users where id = 20;
select * from users where id = "20";
select * from users where id = '20';
请参阅MySQL DOC了解更多深度
答案 1 :(得分:0)
MySQL在比较不同类型时的conversion行为是明确定义的。比较字符串和数字时,两者都转换为浮点数。它在手册中概述,§11.2。
答案 2 :(得分:-1)
IMO,您可以尝试: -
cast( "-10" as signed )
这是在mysql中强制转换(函数名称是强制转换的,显而易见的?)。