如何在()中对mysql进行类型转换

时间:2017-03-27 12:33:09

标签: php mysql performance

我正在构建一个创建查询字符串的php脚本,如

$products = array(873, 874, 875);
$sql = 'select * from product_thumbnails where product in (' . implode($products, ', ') . ')';

创建一个类似

的查询
'select * from product_thumbnails where product in (873, 874, 875)'

产品的数据类型为int。 in()函数的参数是否被视为字符串?如果是这样,那将使mysql将int与字符串进行比较,因此随着应用程序的增长可能会导致查询速度变慢。有没有办法对params进行类型转换或告诉mysql将它们视为int?或者mysql足够聪明,可以单独处理它?<​​/ p>

修改

非常感谢Jerodev和jilesh的回答 - Mysql将这些视为int。如果你想要一个字符串,只需在查询字符串中使用引号,如

' in ("stringtype", "stringtype") '

1 个答案:

答案 0 :(得分:0)

在MySQL语法中...当需要一个数字时,您可以提供一个数字123 一个字符串"123"

在预期字符串时,您可以在将VARCHAR与未加引号的数字(123)进行比较时提供,这需要额外的努力来转换VARCHAR为数字,通常会给您错误的答案:"abc"被视为0,或者至少有些令人困惑:"123abc"被视为123