Sie können COLLATE NOCASE
in Ihrer SELECT
Abfrage Folgendes verwenden:
SELECT * FROM ... WHERE name = 'someone' COLLATE NOCASE
Außerdem können Sie in SQLite angeben, dass bei einer Spalte beim Erstellen der Tabelle die Groß- und Kleinschreibung nicht berücksichtigt werden soll, indem Sie in der Spaltendefinition angeben collate nocase
(die anderen Optionen sind binary
(Standard) und rtrim
; siehe hier ). Sie können auch angeben, collate nocase
wann Sie einen Index erstellen. Zum Beispiel:
Tabelle erstellen Test
(
Text_Value Text sortiert Nocase
);
in Testwerte einfügen ('A');
in Testwerte einfügen ('b');
in Testwerte einfügen ('C');
Erstellen Sie den Index Test_Text_Value_Index
on Test (Text_Value collate nocase);
Ausdrücke, bei denen es Test.Text_Value
sich um Ausdrücke handelt, sollten jetzt nicht mehr zwischen Groß- und Kleinschreibung unterscheiden. Zum Beispiel:
sqlite> wähle Text_Value aus Test, wobei Text_Value = 'B';
Text_Value
----------------
b
sqlite> Wählen Sie Text_Value aus der Testreihenfolge von Text_Value aus.
Text_Value
----------------
EIN
b
C.
sqlite> wählen Sie Text_Value aus der Testreihenfolge von Text_Value desc;
Text_Value
----------------
C.
b
EIN
Der Optimierer kann den Index möglicherweise auch für die Suche und den Abgleich in der Spalte verwenden, bei denen die Groß- und Kleinschreibung nicht berücksichtigt wird. Sie können dies mit dem explain
SQL-Befehl überprüfen , z.
sqlite> EXPLAIN Wählen Sie Text_Value aus Test aus, wobei Text_Value = 'b';
Adr-Opcode p1 p2 p3
---------------- -------------- ---------- ---------- ---------------------------------
0 Gehe zu 0 16
1 Ganzzahl 0 0
2 OpenRead 1 3 keyinfo (1, NOCASE)
3 SetNumColumns 1 2
4 String8 0 0 b
5 IsNull -1 14
6 MakeRecord 1 0 a
7 MemStore 0 0
8 MoveGe 1 14
9 MemLoad 0 0
10 IdxGE 1 14 +
11 Spalte 1 0
12 Rückruf 1 0
13 Weiter 1 9
14 Schließen 1 0
15 Halt 0 0
16 Transaktion 0 0
17 VerifyCookie 0 4
18 Gehe zu 0 1
19 Noop 0 0