如何更改sqlite3数据库的排序规则以不敏感地排序大小写?

时间:2009-07-27 15:13:00

标签: sql sqlite sql-order-by case-insensitive

我查询了sqlite3数据库,它提供了已排序的数据。数据基于列varchar列“名称”的列进行排序。现在当我进行查询时

select * from tableNames Order by Name;

它提供了这样的数据。

    Pen
    Stapler
    pencil

意味着它正在考虑区分大小写的事情。我想要的方式如下

    Pen
    pencil
    Stapler

那么我应该在sqlite3数据库中进行哪些更改以获得必要的结果?

  

相关How to set Sqlite3 to be case insensitive when string comparing?

4 个答案:

答案 0 :(得分:20)

要对其进行排序不区分大小写,您可以使用ORDER BY Name COLLATE NOCASE

答案 1 :(得分:10)

SQLite Datatypes documentation讨论了用户定义的归类序列。具体来说,您使用COLLATE NOCASE来实现您的目标。

他们举了一个例子:

CREATE TABLE t1(
    a,                 -- default collation type BINARY
    b COLLATE BINARY,  -- default collation type BINARY
    c COLLATE REVERSE, -- default collation type REVERSE
    d COLLATE NOCASE   -- default collation type NOCASE
);

并注意:

- 使用NOCASE校对序列(即值)进行分组 - 'abc'和'ABC'放在同一组中)。 SELECT count(*)GROUP BY d FROM t1;

答案 2 :(得分:2)

select * from tableNames Order by lower(Name);

Michael van der Westhuizen在下面的评论中解释了为什么这不是一个好方法。我正在离开这个答案,以保留他的评论,并作为对可能具有我同样“明智”想法的其他人的警告; - )

答案 3 :(得分:1)

在SQLite数据库中使用此语句:

PRAGMA case_sensitive_like = false