20

ソートされたデータを提供するsqlite3データベースのクエリがあります。varcharデータは、 「名前」列である列に基づいてソートされます。今私がクエリを行うとき

select * from tableNames Order by Name;

このようなデータを提供します。

    ペン
    ホッチキス
    鉛筆

大文字と小文字を区別するものを検討していることを意味します。私が欲しい方法は次のとおりです

    ペン
    鉛筆
    ホッチキス

では、必要な結果を得るためにsqlite3データベースにどのような変更を加える必要がありますか?

関連文字列を比較するときにSqlite3で大文字と小文字を区別しないように設定するにはどうすればよいですか?

4

4 に答える 4

24

大文字と小文字を区別せずに並べ替えるには、ORDER BY Name COLLATE NOCASE

于 2010-08-04T11:33:38.083 に答える
13

SQLiteデータ型のドキュメントでは、ユーザー定義の照合シーケンスについて説明しています。具体的には、COLLATENOCASEを使用して目標を達成します。

彼らは例を挙げます:

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;

于 2009-07-29T22:34:59.400 に答える
1
select * from tableNames Order by lower(Name);

Michael van der Westhuizenは、以下のコメントで、これが良い方法ではない理由を説明しています。私は彼のコメントを保存し、私が持っていたのと同じ「明るい」考えを持っているかもしれない他の人への警告として役立つために、この答えを残しています;-)

于 2009-07-29T22:38:26.193 に答える
0

SQLiteデータベースで次のステートメントを使用します。

PRAGMA case_sensitive_like = false
于 2010-11-08T17:42:44.627 に答える