使用MYSQL查询中的强制转换,它可以在localhost中工作,但在服务器中不工作

使用MYSQL查询中的强制转换,它可以在localhost中工作,但在服务器中不工作,mysql,sql,Mysql,Sql,在使用cast的mysql中,我编写了如下查询 Accnno-varchar SELECT*FROM books,其中category='Book'ORDER BY CAST(Accnno AS int)DESC LIMIT 0,10 上面的查询在本地主机上运行良好,但在服务器上不工作,它显示错误,如 您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解在第1行使用“int)DESC LIMIT 0,10”附近的正确语法,我建议使用隐式转换: SELECT b.* FROM bo

在使用cast的mysql中,我编写了如下查询

Accnno-varchar

SELECT*FROM books,其中category='Book'ORDER BY CAST(Accnno AS int)DESC LIMIT 0,10

上面的查询在本地主机上运行良好,但在服务器上不工作,它显示错误,如


您的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

你真的确定它能在本地主机上工作吗?不接受它。它在本地主机中工作。我用decimal代替了int,现在它在服务器SELECT*FROM
books
where
category
=“Book”ORDER BY CAST(
Accnno
AS decimal)DESC LIMIT 0,10Yep中工作,这里解释了:int不是MySQL中CAST函数的合法数据类型。使用未签名或已签名。或者使用隐式转换
按0+Accnno排序(如果第一个非空格字符不是数字,则将失败)。请修复数据库设计,不要将数字作为字符串存储。然后你就可以完全摆脱演员阵容了