MySQL查询将数字括在字符串中

时间:2011-12-07 06:19:31

标签: mysql casting

假设我有一个查询

SELECT * FROM table WHERE x > y;

其中“y”是用户输入值。我想把y括在引号中。据我测试,当添加引号时,查询正常工作。是否定义了行为?是否已知会导致效率下降?

请注意,查询是为简单起见而编写的示例。此外,这不是尝试处理SQL注入。

3 个答案:

答案 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中强制转换(函数名称是强制转换的,显而易见的?)。