如何解决格式化整数以使用货币,然后按DEDER排序
我试图按DESC顺序对数值进行排序,除了少数几个乱序的数字外,下面的查询可以完成大部分工作。
"SELECT CONCAT('$',FORMAT(soldprice,0)) AS soldprice FROM wp_previous_listings WHERE wp_previous_listings.main_email = '". $current_email ."' ORDER BY CHAR_LENGTH(soldprice) DESC"
db中的soldprice值是整数(保存为双精度)(无逗号或$)。我使用CONCAT格式设置了soldprice,以在查询中添加$和逗号,然后计算每个soldprice的长度以进行订购。
电流输出
$10,450,000
$4,400,000
$1,700,287,500
$8,800,000
$8,750,000
$6,669,828
$5,200,850,000
预期产量
$10,500
关于如何进行的任何想法?
解决方法
哦,我现在看到的是,您将别名命名为与数据库中的实际列名称相同的名称,并且别名上加上了$
,所以现在它是一个String,而数字表示的字符串代表的排序方式不像实数。
所以去
SELECT CONCAT('$',FORMAT(soldprice,0)) AS sp
FROM wp_previous_listings
WHERE wp_previous_listings.main_email = '". $current_email ."'
ORDER BY soldprice DESC"
我个人不会在PHP中而不是在SQL中使用货币级联,但是无论如何
,您的脚本对SQL Injection Attack开放。 甚至if you are escaping inputs,its not safe! 您应该考虑在
MYSQLI_
或PDO
API中使用prepared parameterized statements而不是串联值
我不确定CHAR_LENGTH与此相关。由于该列已经是一个数字,因此请按以下顺序排序:
"SELECT CONCAT('$',0)) AS soldprice FROM wp_previous_listings WHERE wp_previous_listings.main_email = '". $current_email ."' ORDER BY soldprice DESC"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。