如何使用SQL Order By语句对结果进行排序不区分大小写?

Cod*_*ile 133 sql sqlite sorting sql-order-by

我有一个SQLite数据库,我试图按字母顺序排序.问题是,SQLite在排序过程中似乎没有考虑A = a,因此我得到如下结果:

A B C T a b c g

我想得到:

A a b B C c g T

我不知道需要做什么特殊的SQL事情?

SELECT * FROM NOTES ORDER BY title
Run Code Online (Sandbox Code Playgroud)

dan*_*n04 239

你也可以ORDER BY TITLE COLLATE NOCASE.

编辑:如果你需要指定ASCDESC后添加此NOCASE

ORDER BY TITLE COLLATE NOCASE ASC

要么

ORDER BY TITLE COLLATE NOCASE DESC

  • "按标题收集排序"是否比"按顺序排列(标题)"更有效? (6认同)
  • @Vincy:我不明白区分大小写的字符串比较有什么奇怪的。这就是“<”、“==”等运算符在我熟悉的每种编程语言中默认的工作方式。 (2认同)
  • 如果数据库使用 UTF8,这通常无法开箱即用。(请注意,标题不仅仅指 SQLite。)在这种情况下,使用下面的 lower() 或 upper() 的建议是有效的。 (2认同)

Cha*_*rch 96

您可以将所有内容转换为小写以进行排序:

SELECT * FROM NOTES ORDER BY LOWER(title);
Run Code Online (Sandbox Code Playgroud)

如果你想确保大写字母仍然在小写字母之前结束,只需将其添加为辅助排序:

SELECT * FROM NOTES ORDER BY LOWER(title), title;
Run Code Online (Sandbox Code Playgroud)

  • 是的,没有办法将ORDER BY的行为更改为不区分大小写. (2认同)
  • “上”和“下”有什么区别 (2认同)
  • 为此目的,它们都不会达到相同的效果,即使所有项目的情况相同. (2认同)