在使用cast的mysql中,我编写了类似的查询
Acnno-varchar
SELECT * FROM books where category = 'Book' ORDER BY CAST(Accnno AS int) DESC LIMIT 0,10
上面的查询在localhost中工作正常,但在服务器中不工作,它显示类似的错误
您的SQL语法有错误;查看与MySQL服务器版本对应的手册,了解在第1行"int(DESC LIMIT 0,10"附近使用的正确语法
我建议使用隐式转换:
SELECT b.*
FROM books b
WHERE b.category = 'Book'
ORDER BY (Accnno + 0) DESC
LIMIT 0, 10;
这不会产生错误。如果Accnno
不以前导零开头,也没有小数点(这两种情况似乎都很可能(,那么您也可以只使用字符串函数:
ORDER BY LENGTH(accnno) DESC, accnno DESC