如何在“限制”中将字符串参数转换为int

时间:2018-10-24 13:47:39

标签: mysql

SELECT DISTINCT(id) vetid, 
                c.clinic_id, 
                c.clinic_name, 
                c.type, 
                c.city, 
                c.state, 
                c.country, 
                c.lat, 
                c.lng, 
                c.zip, 
                ( 3959 * Acos( Cos( Radians(44.977498) ) * Cos( Radians( c.lat ) ) * Cos( Radians( c.lng ) - Radians(-93.406556) ) + Sin( Radians(44.977498) ) * Sin( Radians( c.lat ) ) ) ) AS distance
FROM            biah_clinics c 
WHERE           opt_out != '1' 
AND             c.country = 'US' 
HAVING          distance < '10' 
ORDER BY        distance limit cast('20' AS int);

使用Drupal的db_query,传递给查询的所有参数均作为STRING传递。这给我一个错误。这就是为什么我要在查询中将该参数转换为INT的原因。

所以它最终应该像这样:

limit cast('20' AS int);
limit 20;

但这给了我MySQL错误:

  

“ SQLSTATE [42000]:语法错误或访问冲突:1064   您的SQL语法错误;检查与您的手册相对应的手册   MySQL服务器版本,可在'CAST('25'AS)附近使用正确的语法   INT)'在第15行“

1 个答案:

答案 0 :(得分:0)

我最终使用了drupal的db_query_range(),因为sql限制不起作用,但是使用整数文字。

https://api.drupal.org/api/drupal/includes%21database%21database.inc/function/db_query_range/7.x