使用MYSQL查询中的强制转换,它可以在localhost中工作,但在服务器中不工作
在使用cast的mysql中,我编写了如下查询 Accnno-varchar使用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
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
wherecategory
=“Book”ORDER BY CAST(Accnno
AS decimal)DESC LIMIT 0,10Yep中工作,这里解释了:int不是MySQL中CAST函数的合法数据类型。使用未签名或已签名。或者使用隐式转换按0+Accnno排序(如果第一个非空格字符不是数字,则将失败)。请修复数据库设计,不要将数字作为字符串存储。然后你就可以完全摆脱演员阵容了