ORDER BY 不提供最大数字

问题描述

我正在使用 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 datamy outcome

my structure

解决方法

您的问题是您不在 SUM_D 列中存储数字而是字符串。
更新表格,将所有 , 替换为 . 作为小数分隔符,并删除所有空格:

UPDATE borg_1
SET SUM_D = REPLACE(REPLACE(SUM_D,' ',''),','.')

那么您的查询将正常工作。

请注意,您应该将列的数据类型定义为 REAL 而不是 INT,因为您想要存储浮点数,但仅凭这一点并不能解决您的问题。

查看简化的 demo

,

尝试使用 SELECT NAME,SUM_D FROM borg_1 ORDER BY cast(replace(replace(SUM_D,'' ),'.') as NUMERIC) DESC LIMIT 20; 表达式:

,

因为sqlite可以认为SUM_D包含字符串值:

  1. 因为你的值有 while 空格。
  2. 您使用 . 代替 $('input[type="text"],input[type="checkbox"],input[type="radio"],input[type="textarea"],input[type="button"],input[type="submit"],select','#myid1','#myid2').prop("disabled","disabled");

您还有其他选择:在插入数据库之前格式化您的数字。