SORU
8 Mayıs 2009, Cuma


Büyük / küçük harf duyarlı dize ETMENİZ için SQL karşılaştırın

Akılsızca ToUpper ve ToLower küçük harf duyarsız dize karşılaştırmaları yapmak için kullanmak için gerekli olduğunu okudum, ama LINQ-to-SQL konusunda hiçbir alternatif göremiyorum. Dize ignoreCase ve CompareOptions argümanlar.Mukayese ETMENİZ için SQL (büyük küçük harf duyarlı bir veritabanı kullanıyorsanız, büyük / küçük harf duyarlı bir karşılaştırma için sorarsan bile büyük / küçük harfe duyarlı bir karşılaştırma olsun) tarafından dikkate alınmaz. ToLower ya da en iyi seçenek burada ToUpper? Biri diğerinden daha iyi mi? ToUpper daha iyi olduğunu okumuştum düşündüm, ama eğer burada da geçerlidir bilmiyorum. (Kod yorumları bir çok şey yapıyorum ve herkes ToLower kullanıyor.)

Dim s = From row In context.Table Where String.Compare(row.Name, "test", StringComparison.InvariantCultureIgnoreCase) = 0

Bu sadece satır karşılaştıran bir SQL sorgu çevirir.Adı "" ve "" ve "TEST" (büyük küçük harf duyarlı veritabanı. Test döndürmez testi ile

CEVAP
8 Mayıs 2009, Cuma


Dediğiniz gibi, ToUpper ve ToLower arasında bazı önemli farklar vardır, ve sadece bir harf duyarsız eşitlik kontrolleri yapmaya çalıştığın zaman doğru genişliğinde.

İdeal olarak, büyük küçük harf duyarsız eşitlik bir kontrol yapmak için en iyi yoldur:

String.Equals(row.Name, "test", StringComparison.OrdinalIgnoreCase)

NotSıraİgnoreCase güvenilir güvenlik sağlamak için. Ama tam olarak durum () kullanın onay hassas türünü amacınıza göre değişir. Ama genel olarak kullanımı eşitlik kontroller için Eşittir ve sıralama yaparken Karşılaştırmak ve bu iş için doğru StringComparison seçin.

Michael Kaplan (kültür ve karakter üzerine tanınmış bir otorite bu gibi işleme) ToUpper ToLower vs ilgili mesajlar:

"Dizesini söylüyor.ToUpper –OS muhafaza kurallarına almak için yerine ToUpper ToLower kullanın ve InvariantCulture belirtin"

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • SVB International

    SVB Internat

    29 EKİM 2011
  • tsweeney79

    tsweeney79

    21 Ocak 2008
  • Tylerron

    Tylerron

    6 AĞUSTOS 2006