sorgular peşinSQL Server bu veritabanına sahip harf duyarlılığı
yılında teşekkürleryazmayı unuttum - SQLCE
sorgular peşinSQL Server bu veritabanına sahip harf duyarlılığı
yılında teşekkürleryazmayı unuttum - SQLCE
Tüm harmanlama ilgili. Her birinin bir eki vardır (CI ve CS, Case Insensitive anlamına gelir ve Büyük/Küçük Harf Duyarlı). Basit bir dize karşılaştırma yapıyor eğer her üç ürün alacak böylece
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
-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
@TomTom - "COLLATE" işlevini kullanmak, endekslerin kullanılmayacağı anlamına gelir. –
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. –
, 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
?
bu sadece where
sonra ikili anahtar kelime eklemek deneyin: küçük/büyük değil
select * from MyTbl where binary A = 'ABCdef';
Büyük harf/Lowecase. – Oded