Bạn có thể dùng COLLATE NOCASE
trong SELECT
truy vấn của mình :
SELECT * FROM ... WHERE name = 'someone' COLLATE NOCASE
Ngoài ra, trong SQLite, bạn có thể chỉ ra rằng một cột không phân biệt chữ hoa chữ thường khi bạn tạo bảng bằng cách chỉ định collate nocase
trong định nghĩa cột (các tùy chọn khác là binary
(mặc định) vàrtrim
; xem tại đây ). Bạn có thể chỉ địnhcollate nocase
khi bạn tạo một chỉ mục là tốt. Ví dụ:
tạo bảng thử nghiệm
(
Text_Value văn bản đối chiếu nocase
);
chèn vào các giá trị Kiểm tra ('A');
chèn vào các giá trị thử nghiệm ('b');
chèn vào các giá trị thử nghiệm ('C');
tạo chỉ mục Test_Text_Value_Index
trong bài kiểm tra (Text_Value collate nocase);
Biểu hiện liên quan Test.Text_Value
nên bây giờ không nhạy cảm trường hợp. Ví dụ:
sqlite> chọn Text_Value từ Kiểm tra trong đó Text_Value = 'B';
Text_Value
----------------
b
sqlite> chọn Text_Value từ Thứ tự kiểm tra của Text_Value;
Text_Value
----------------
Một
b
C
sqlite> chọn Text_Value từ Thứ tự kiểm tra của Text_Value desc;
Text_Value
----------------
C
b
Một
Trình tối ưu hóa cũng có khả năng sử dụng chỉ mục cho tìm kiếm và kết hợp không phân biệt chữ hoa chữ thường trên cột. Bạn có thể kiểm tra điều này bằng explain
lệnh SQL, vd:
sqlite> giải thích chọn Text_Value từ Test trong đó Text_Value = 'b';
addr opcode p1 p2 p3
---------------- -------------- ---------- ---------- ---------------------------------
0 đi 0 16
1 số nguyên 0 0
2 OpenRead 1 3 keyinfo (1, NOCASE)
3 SetNumColumn 1 2
4 Chuỗi8 0 0 b
5 Không có -1 -1
6 MakeRecord 1 0 a
7 MemStore 0 0
8 Di chuyểnGe 1 14
9 Tải 0 0
10 IdxGE 1 14 +
11 Cột 1 0
12 Gọi lại 1 0
13 Tiếp theo 1 9
14 Đóng 1 0
15 Dừng 0 0
16 Giao dịch 0 0
17 ConfirmCookie 0 4
18 Goto 0 1
19 giờ 0 0