SORU
10 HAZİRAN 2009, ÇARŞAMBA


Nasıl dize karşılaştırırken büyük / küçük harf duyarlı olmak Sqlite3 ayarlamak için?

Dize eşleştirme tarafından sqlite3 veritabanı kayıtları seçmek istiyorum. Ama eğer kullanırsam '=' where yan tümcesi, sqlite3 büyük / küçük harf duyarlı olduğunu buldum. Kimseye string büyük küçük harf duyarlı karşılaştırma nasıl kullanılacağını söyleyebilir mi? Çok teşekkür ederim!

CEVAP
10 HAZİRAN 2009, ÇARŞAMBA


SELECT sorgunuza COLLATE NOCASE kullanabilirsiniz:

SELECT * FROM ... WHERE name = 'someone' COLLATE NOCASE

Ayrıca, SQLite, sen-ebilmek gösteren bir sütun olmalıdır büyük / küçük harf duyarlı olduğunda oluşturduğunuz tablonun belirterek collate nocase sütun tanımı (diğer seçenekler binary (varsayılan) ve rtrim; here). Bir dizin olarak oluşturduğunuzda collate nocase belirtebilirsiniz. Örneğin:

create table Test
(
  Text_Value  text collate nocase
);

insert into Test values ('A');
insert into Test values ('b');
insert into Test values ('C');

create index Test_Text_Value_Index
  on Test (Text_Value collate nocase);

İfadeler Test.Text_Value ilgili artık büyük / küçük harf duyarlı olmalıdır. Örneğin:

sqlite> select Text_Value from Test where Text_Value = 'B';
Text_Value      
----------------
b               

sqlite> select Text_Value from Test order by Text_Value;
Text_Value      
----------------
A               
b               
C    

sqlite> select Text_Value from Test order by Text_Value desc;
Text_Value      
----------------
C               
b               
A               

Bu doktoru da potansiyel olarak büyük / küçük harf duyarlı ve sütun eşleşen arama için dizin. Bu explain SQL komutu, örneğin kullanarak kontrol edebilirsiniz:

sqlite> explain select Text_Value from Test where Text_Value = 'b';
addr              opcode          p1          p2          p3                               
----------------  --------------  ----------  ----------  ---------------------------------
0                 Goto            0           16                                           
1                 Integer         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                Column          1           0                                            
12                Callback        1           0                                            
13                Next            1           9                                            
14                Close           1           0                                            
15                Halt            0           0                                            
16                Transaction     0           0                                            
17                VerifyCookie    0           4                                            
18                Goto            0           1                                            
19                Noop            0           0                                            

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Cristina Landa

    Cristina Lan

    28 Ocak 2010
  • Google Россия

    Google Ро

    9 Temmuz 2007
  • williamfitzsimmons

    williamfitzs

    14 Mart 2008