Davayı Oracle aranıyor duyarsız
Ve diğer karşılaştırma operatörleri, =
GİBİ vb varsayılan davranışı büyük / küçük harfe duyarlıdır.
Mümkün onları duyarlı olun.
CEVAP
3 ana yolu tam metin dizinleri kullanmadan Oracle büyük / küçük harf duyarlı bir arama gerçekleştirmek için vardır.
Sonuçta ne seçerseniz seçin, sizin bireysel koşullara bağlıdır; asıl şey hatırlamak için performansını artırmak için büyük / küçük harf duyarlı arama için doğru dizin.
1. Köşenizi dava ve dize aynı şekilde.
Tüm veri UPPER()
LOWER()
kullanarak aynı durumda olması için zorlayabilir:
select * from my_table where upper(column_1) = upper('my_string');
ya
select * from my_table where lower(column_1) = lower('my_string');
column_1
upper(column_1)
ya uygun olarak lower(column_1)
, endeksli değil, bu tam bir tablo taraması zorunlu. Bunu önlemek için function-based index bir oluşturabilirsiniz.
create index my_index on my_table ( lower(column_1) );
Eğer dize etrafında %
bir arada var GİBİ kullanıyorsanız arıyorsun.
select * from my_table where lower(column_1) = lower('my_string') || '%';
This SQL Fiddle tüm bu sorgular içinde ne olacağını gösterir. Bu dizin kullanıldığında ve değil mi zaman gösterir Planlarını Açıklamak unutmayın.
2. Düzenli ifadeler kullanın.
Oracle 10 g dan itibaren REGEXP_LIKE()
mevcuttur. Büyük / küçük harf duyarlı bir arama gerçekleştirmek için _match_parameter_ 'i'
belirtebilirsiniz.
Eşitlik operatörü olarak bu kullanmak için karat ve dolar işareti ile gösterilir, string, başlangıç ve bitiş belirtmeniz gerekir.
select * from my_table where regexp_like(column_1, '^my_string$', 'i');
GİBİ eşdeğer gerçekleştirmek için, bu kaldırılabilir.
select * from my_table where regexp_like(column_1, 'my_string', 'i');
Senin dize farklı düzenli ifade motoru tarafından yorumlanacaktır karakterler içerebilir olarak buna dikkat edin.
This SQL Fiddle aynı örnek gösterir REGEXP_LİKE kullanmaktan başka çıkış().
3. Oturum düzeyinde değiştirin.
NLS_SORT parametre GİBİ sipariş ve çeşitli karşılaştırma operatörleri, =
dahil ve harmanlama sırasını yönetir. Oturum değiştirerek ikili, büyük / küçük harf duyarlı bir sıralama belirtebilirsiniz. Bu her sorgu oturumda gerçekleştirilen büyük / küçük harf duyarlı parametreleri gerçekleştirmek olacak.
alter session set nls_sort=BINARY_CI
Eğer farklı bir dil belirlemek istiyorsanız linguistic sorting and string searching civarında ek bilgi var, ya da aksan-duyarlı arama kullanarak bir BİNARY_Aİ.
Ayrıca NLS_COMP parametreyi değiştirmek gerekir; alıntı:
Tam operatörler ve sorgu yan tümceleri NLS_SORT parametresi olan itaat NLS_COMP parametrenin değerine bağlıdır. Bir operatör ya da eğer yan NLS_COMP tarafından belirlenen NLS_SORT değeri, itaat etmez harmanlama kullanılan İKİLİ.
NLS_COMP varsayılan değer olan İKİLİ; ama, DİLSEL Oracle NLS_SORT değerine dikkat etmesi gerektiğini belirtir:
Yan ve PL/SQL NEREDE tüm SQL işlemleri için karşılaştırmalar blok dilsel sıralama NLS_SORT belirtilen kullanmalısınız parametre. Performansını artırmak için de tanımlayabilirsiniz bu sütun için istediğiniz dilsel dilsel Endeksi karşılaştırmalar.
Bu yüzden, bir kez daha, oturum değiştirmek gerekir
alter session set nls_comp=LINGUISTIC
linguistic index bir oluşturmak için performansını artırmak için isteyebilirsiniz belgelerinde kaydetti
create index my_linguistc_index on my_table
(NLSSORT(column_1, 'NLS_SORT = BINARY_CI'));
Oracle SQL Geliştirici baskı metin çal...
En iyi yapmak için çoklu Satır Ekle Or...
Oracle pl-sql kaçış karakteri (a '...
Oracle tüm tabloların listesini almak?...
PL/basit bir dizi değişken oluşturma S...