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

fruv7luv  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(605)
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\u查询,传递给查询的所有参数都作为字符串传递。这给了我一个错误。这就是为什么在我的查询中,我要将该参数转换为int。
所以结果应该是这样的:

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

但这给了我mysql的一个错误:
“sqlstate[42000]:语法错误或访问冲突:1064您的sql语法有错误;在第15行的“cast('25'as int)”附近,检查与mysql服务器版本对应的手册,以获得正确的语法

cbjzeqam

cbjzeqam1#

我最终使用了drupal的db\u query\u range(),因为sql限制不起作用,而是使用整数文本。
https://api.drupal.org/api/drupal/includes%21database%21database.inc/function/db_query_range/7.x

相关问题