2010-08-02 13 views

cevap

32

Sen COLLATE anahtar kelime yararlanarak sorgu harf duyarlı yapabilirsiniz.

SELECT A 
FROM MyTbl 
WHERE A COLLATE Latin1_General_CS_AS = 'ABCdef' 
+0

thank yardım için, nasıl sqlCE üzerinde yapmak için? – Gold

1

SQL olmayan harfe duyarlı varsayılan gereğidir. o harfe duyarlı hale getirmek için, varbinary olarak alanın değerini ve arama değer dağıtmak edebilirsiniz:

SELECT * FROM MyTbl WHERE CAST(A AS varbinary(20)) = CAST('ABCdef' as varbinary(20)) 

yukarıdaki varchar alan nvarchar için onu (teşekkürler @ ps2goat) çift 20 ° C de boyuttadır varsayar. Eğer ABCDEF, ABCDEF varsa

+2

-1 Whow. Bu mümkün olan en kötü cevaptır - tüm endeksleri çıkartın, bir tablo taramasını zorlayın ve harmanlamayı değiştirmenin gerçekliğini tamamen yok sayın;) – TomTom

+3

@TomTom - "COLLATE" işlevini kullanmak, endekslerin kullanılmayacağı anlamına gelir. –

+2

Eminim ki daha kötü cevaplar vardır - bu sorgu en azından işlevleri. Anlayışımdan, ikili bir karşılaştırma yapmadığınız sürece indeksleri kullanarak büyük harf duyarsızlığı belirtmenin bir yolu yoktur. Bunu hiç denemedim, ancak eğer tablo sütununuz bir VARBINARY olarak tanımlanmışsa, bunun üzerinde bir indeks yapabilir ve sadece arama dizginizi yayınlamak zorunda kalabilirsiniz. –

6

, o zaman zaten harfe duyarlı oluyor veritabanında zaten abcdef'ait veya hiçbir kısıtlaması var.

Sen gerçekten indeks kullanımı

SELECT TheColumn 
FROM MyTable 
WHERE TheColumn COLLATE Latin1_General_CS_AS = 'ABCdef' COLLATE Latin1_General_CS_AS 

ne de aksan konusunda geçersiz kılar (non durumda duyarlı veritabanı için) küçük harfe duyarlı olduğundan emin olmak için her iki tarafta da COLLATE eklemek olurdu? Latin1_General_CS_AI, Latin1_General_Bin?

1

bu sadece where sonra ikili anahtar kelime eklemek deneyin: küçük/büyük değil

select * from MyTbl where binary A = 'ABCdef'; 
İlgili konular