php - 如何对在mysql中存储为varchar的 float 价格值进行排序

标签 php mysql

好的, 我对数据库中的某些值有点问题 ,我有 2 种不同类型的值,因为我有 Price (varchar) 列,问题就是这样

[ picture]

我尝试将 select price from products order by CAST(price AS SIGNED) asc 但没有结果,因为价格没有“。”排序不是很好

谢谢!

最佳答案

您应该选择DECIMAL 数据类型来存储您的价格值。

为了暂时绕过这个问题,您可以使用以下任何一种方法:

方法一: ...ORDER BY price+0 ASC..

方法 2: ...ORDER BY CAST(price AS DECIMAL(18,4))...


注意:

最好将 price 列的数据类型更改为 DECIMAL(18,4)

ALTER TABLE tablename MODIFY price DECIMAL(18,4);

如果您引入此更改,那么您ORDER BY price ASC 就足够了。

关于php - 如何对在mysql中存储为varchar的 float 价格值进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40080819/

相关文章:

php - MySQL - 得到两个不同的结果(PHP 和 phpMyAdmin)

php - Laravel/Eloquent 关系不一致

jquery - SQL - 连接 t1.value 与 t2.column 名称匹配的表?

mysql - 查询错误 (1064) : Syntax error near 'INTERSECT(SELECT friend_id FROM user_friend_list WHERE user_id = ' 2 0' and frien' at line 3

java - 保护 Java 应用程序内的数据库信息

MySQL查询-复杂搜索条件

php - 如何在Docker php-fpm alpine中安装LDAP

php - 如何根据用户坐标和半径从表中检索数据

php - 将所有网站都保留在 SSL 下,除了两个子文件夹,没有 .htaccess

php - 需要保存两次提交的 $_POST 数据