我查询了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?
答案 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