當試圖計算沒有由select語句指定的varchar值的行數時,我遇到了一個奇怪的情況。好吧,這聽起來令我困惑,所以讓我舉個例子:COUNT()NOT IN子句中的函數與varchar字段無法正常工作(T-SQL)
假設我在「SomeTable」中有一個字段「MyField」,並且我想計算MyField值不屬於域由「SomeOtherTable」中的「MyOtherField」的值定義。 換句話說,假設我們有MyOtherField = {1,2,3},我想在多少行MyField的值不爲1,2或3.對於計數,我會使用以下查詢:
SELECT COUNT(*) FROM SomeTable
WHERE ([MyField] NOT IN (SELECT MyOtherField FROM SomeOtherTable))
它的功能就像一個魅力。但請注意,MyField和MyOtherField是int類型的。如果我嘗試運行完全相同的查詢,除了varchar類型的字段,它的返回值是0,即使我知道有錯誤的值,我把它們放在那裏!然而,如果我只是通過在上面的查詢中抑制「NOT」子句來計算相反的結果(域中有多少行與我想要的行相反,那麼多少行就不是這樣)......那麼,THAT作品! ¬¬
是的,必須有大量的解決方法,但我想知道爲什麼它不應該如此工作。此外,我不能簡單地修改整個查詢,因爲大部分查詢都是在C#代碼中構建的,基本上,我可以自由更改的唯一一部分不會影響軟件的其他任何部分,對應於域(無論是否在NOT IN子句中)。我希望我明確自己,有人可以幫助我。
在此先感謝。
你有沒有空標記在「SomeOtherTable」對於那場? – 2010-02-25 20:48:50