How to change the collation of sqlite3 database to sort case insensitively?

前端 未结 4 1824
小鲜肉
小鲜肉 2020-12-10 11:22

I have a query for sqlite3 database which provides the sorted data. The data are sorted on the basis of a column which is a varchar column \"Name\". Now when I

相关标签:
4条回答
  • 2020-12-10 11:51

    To sort it Case insensitive you can use ORDER BY Name COLLATE NOCASE

    0 讨论(0)
  • 2020-12-10 11:52

    Use this statement in your SQLite database:

    PRAGMA case_sensitive_like = false
    
    0 讨论(0)
  • 2020-12-10 12:02
    select * from tableNames Order by lower(Name);
    

    Michael van der Westhuizen explains in his comment below why this is not a good way. I am leaving this answer up so as to preserve his comment and to serve as a warning to others who might have the same 'bright' idea I had ;-)

    0 讨论(0)
  • 2020-12-10 12:09

    The SQLite Datatypes documentation discusses user-defined collation sequences. Specifically you use COLLATE NOCASE to achieve your goal.

    They give an example:

    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
    );
    

    and note that:

    -- Grouping is performed using the NOCASE collation sequence (i.e. values -- 'abc' and 'ABC' are placed in the same group). SELECT count(*) GROUP BY d FROM t1;

    0 讨论(0)
提交回复
热议问题