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

  • jedimasterkyle

    jedimasterky

    11 ŞUBAT 2006
  • nemoking of kinges

    nemoking of

    4 EYLÜL 2009
  • TSE

    TSE

    12 Kasım 2012