Seçme ifadesi tarafından belirtilen varchar değerlerine sahip olmayan satır sayısını saymaya çalışırken garip bir duruma rastladım. Tamam, bana kafa karıştırıcı geliyor, bu yüzden bana bir örnek vereyim:COUNT() Varchar alanıyla düzgün çalışmayan işlev IN (T-SQL)
"SomeTable" alanında bir alanım "MyField" var ve kaç tane MyField değerine sahip olduğumu hesaba katalım. "SomeOtherTable" içindeki "MyOtherField" değerleri tarafından tanımlanan etki alanı. Başka bir deyişle, MyOtherField = {1, 2, 3} olduğunu varsayalım, kaç tane MyField değerinin 1, 2 veya 3 olmadığını saymak istiyorum. Bunun için aşağıdaki sorguyu kullanırdım:
SELECT COUNT(*) FROM SomeTable
WHERE ([MyField] NOT IN (SELECT MyOtherField FROM SomeOtherTable))
Ve bir çekicilik gibi çalışır. Ancak, MyField ve MyOtherField'ın yazıldığını unutmayın. Aynı sorguyu çalıştırmayı denediğimde, varchar yazılan alanlar haricinde, geri dönüş değeri 0, yanlış değerler olduğunu bilmeme rağmen, onları oraya koydum! Ve eğer, ancak, tersi saymaya çalışıyorum (kaç satırın ne kadarı olduğu alana karşı kaç tane satır değil, kaç satır değil) sadece yukarıdaki sorgudaki "NOT" ifadesini bastırarak ... Eserleri! 12
Evet, bunun için bir sürü geçici çözüm olmalı, ancak neden gerektiği gibi çalışmadığını bilmek istiyorum. Üstelik, C# kodunun çoğunda oluşturulduğu ve temelde yazılımın herhangi bir bölümünde bir etkisi olmayacak şekilde değiştirebileceğim tek parçamın seçtiği tek deyim olduğu için tüm sorguyu değiştiremiyorum. etki alanına karşılık gelir (NOT IN cümlede ne olursa olsun). Umarım kendimi temizledim ve dışarıda biri bana yardım edebilirdi.
Şimdiden teşekkürler.
Bu alan için "SomeOtherTable" içinde NULL işareti var mı? –