我正在构建一个创建查询字符串的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") '
答案 0 :(得分:0)
在MySQL语法中...当需要一个数字时,您可以提供一个数字123
或一个字符串"123"
。
在预期字符串时,您可以在将VARCHAR
与未加引号的数字(123
)进行比较时提供但,这需要额外的努力来转换VARCHAR
为数字,通常会给您错误的答案:"abc"
被视为0
,或者至少有些令人困惑:"123abc"
被视为123
。