mysql - 格式化整数以使用货币,然后按 DESC 排序
问题描述
我正在尝试按 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"
数据库中的 soldprice 值是整数(保存为双精度)(没有逗号或 $)。我使用 CONCAT 格式化 soldprice 以在查询中添加 $ 和逗号,然后计算每个 soldprice 的长度以用于订购目的。
电流输出
$10,450,000
$4,400,000
$1,700,000
$1,287,500
$8,800,000
$8,750,000
$6,669,828
$5,200,000
$4,850,000
预期产出
$10,450,000
$8,800,000
$6,669,828
$5,200,000
$4,850,000
$4,400,000
$1,700,000
$1,287,500
关于如何进行的任何想法?
解决方案
哦,我现在明白了,您将别名称为与数据库中的实际列名相同的名称,并且在其$
上连接了一个字符串,因此它现在是一个字符串,并且数字的字符串表示形式不像实数那样排序。
所以去吧
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开放。即使您正在逃避输入,它也不安全! 您应该考虑在或API 中使用准备好的参数化语句,而不是连接值
MYSQLI_
PDO
推荐阅读
- c# - 计算数据集中每个日期的类别项目(带有 linq 的 C#)
- reactjs - webpack-dev-server 正在路由 axios 请求而不是链接
- jmeter - 在jMeter中启动多个firefox实例,其中一些不运行
- php - Laravel Lumen Collection - 按总和分组并保留值
- testing - 向 testacafe-resizeWindow 添加额外的尺寸
- python - 机器人未检测到 Webscraping 时在循环中添加到站点的新产品 [Python]
- python - 何时调用 Model call() 和 train_step()?
- javascript - 无法使用 React 中的事件处理程序更改状态
- javascript - 将数据推送到数组索引内。反应原生 JSX
- amazon-web-services - 自动配置的 Lambda 需要初始化时间