ORDER BY 不给最大数字
ORDER BY not giving max digital
我正在使用 SQLite Studio 并且需要在 SUM_D 中显示 20 个最大的数字,但它让我得到了最大的“999,987”。至少我有“1 925,886”,但它没有显示。
SELECT NAME, SUM_D FROM borg_1 ORDER BY SUM_D DESC LIMIT 20;
so here u could see my data 和
my outcome
my structure
尝试使用CAST
表达式:
SELECT NAME, SUM_D FROM borg_1 ORDER BY cast(replace(replace(SUM_D, ' ','' ),',','.') as NUMERIC) DESC LIMIT 20;
因为sqlite可以认为SUM_D包含字符串值:
- 因为你的值有 while 空格。
- 您使用
,
代替 .
您还有其他选择:在插入到数据库之前格式化您的数字。
您的问题是您没有在 SUM_D
列中存储数字,而是在字符串中。
更新 table 以便将所有 ,
替换为 .
作为小数点分隔符并删除所有空格:
UPDATE borg_1
SET SUM_D = REPLACE(REPLACE(SUM_D, ' ', ''), ',', '.')
那么您的查询将正常工作。
请注意,您应该将列的数据类型定义为 REAL
而不是 INT
,因为您要存储浮点数,但仅此一项并不能解决您的问题。
查看简化版 demo.
我正在使用 SQLite Studio 并且需要在 SUM_D 中显示 20 个最大的数字,但它让我得到了最大的“999,987”。至少我有“1 925,886”,但它没有显示。
SELECT NAME, SUM_D FROM borg_1 ORDER BY SUM_D DESC LIMIT 20;
so here u could see my data 和 my outcome
my structure
尝试使用CAST
表达式:
SELECT NAME, SUM_D FROM borg_1 ORDER BY cast(replace(replace(SUM_D, ' ','' ),',','.') as NUMERIC) DESC LIMIT 20;
因为sqlite可以认为SUM_D包含字符串值:
- 因为你的值有 while 空格。
- 您使用
,
代替.
您还有其他选择:在插入到数据库之前格式化您的数字。
您的问题是您没有在 SUM_D
列中存储数字,而是在字符串中。
更新 table 以便将所有 ,
替换为 .
作为小数点分隔符并删除所有空格:
UPDATE borg_1
SET SUM_D = REPLACE(REPLACE(SUM_D, ' ', ''), ',', '.')
那么您的查询将正常工作。
请注意,您应该将列的数据类型定义为 REAL
而不是 INT
,因为您要存储浮点数,但仅此一项并不能解决您的问题。
查看简化版 demo.