【问题标题】:Sort table names in Ascending order in SQL在 SQL 中按升序对表名进行排序
【发布时间】:2015-03-02 16:55:12
【问题描述】:

我有一个名为 Names 的表,数据的存储方式类似于

Raju;
Rakesh;
Preema;
Swetha;
+9199869986;
+9145899656;
+9177885555;
Testing;
Doggy;

现在,如果我需要按名称排序,我试过这样

"SELECT * FROM namesTable ORDER BY tblNames ASC"

这里我先得到数字,我希望数字在最后,来自 A 的实际字母应该首先出现。

任何帮助

【问题讨论】:

  • 为什么名称字段中的数字是?
  • 你用的是什么数据库?
  • 您好,抱歉耽搁了,它的 sqlite 数据库,假设用户没有存储姓名字段,我们将在姓名字段中存储数字
  • 非常糟糕的设计。请改用默认名称。喜欢No name inserted

标签: android sql sqlite sorting


【解决方案1】:

字符串值的排序基于所谓的“排序规则”。在您的情况下,默认排序规则可能只使用 ASCII 值,这会将数字放在字母之前。

您可以使用case 逻辑解决此问题。比如:

order by (case when substr(tblNames, 1, 1) in ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+') then 2
               else 1
          end),
         tblNames

我已使此 SQL 尽可能通用,因为您已使用两个不同的数据库标记问题。

【讨论】:

  • 是的,应该是tblNames。你的问题是“如果我需要按名称排序”,所以我只是使用name 作为列名。
【解决方案2】:

这是你想要的吗?它会先输出名称吗?在名为 NAMES 的列中包含数字不是一个好主意

 "SELECT * FROM namesTable ORDER BY tblNames DSC"

【讨论】:

    猜你喜欢
    • 2015-05-03
    • 2020-12-25
    • 2019-01-04
    • 2013-05-30
    • 2019-07-23
    • 2013-05-29
    • 2016-10-18
    • 1970-01-01
    相关资源
    最近更新 更多