檢查運算符優先級在http://msdn.microsoft.com/en-us/library/ms190276.aspx
「和」前被評估「或」所以你的例子是這樣的:
SELECT COUNT(col1)
FROM table
WHERE
LEN(col2) > 1 OR LEN(col3) > 1 OR (LEN(col4) > 1 AND col1 = '1')
這是一個相當開放的選擇。你說:
我想算不具有價值
的記錄,但你的代碼是計算那些有值的記錄。因此,也許你想這樣的:
SELECT COUNT(col1)
FROM table
WHERE col1 = '1' AND
( col2 IS NULL
OR col3 IS NULL
OR col4 IS NULL
)
您可以顯示數據時,你說有值:
WHERE LEN(COL2)> 0
但如果COL2是NULL,那麼LEN(COL2) IS NULL也是如此。不是零。
如果你的字符串「」,而不是NULL,那麼你可以檢查長度:
SELECT COUNT(col1)
FROM table
WHERE col1 = '1' AND
( LEN(col2) = 0
OR LEN(col3) = 0
OR LEN(col4) = 0
)
當然,如果你真的打算見人說人不爲空值:
SELECT COUNT(col1)
FROM table
WHERE col1 = '1' AND
( LEN(col2) > 0
OR LEN(col3) > 0
OR LEN(col4) > 0
)
同樣在你的例子中,你說LEN()是> 1.你的意思是大於1還是零?
什麼是 「空」 是什麼意思?空值?空串?還有別的嗎? – 2013-03-20 20:14:45
並具有比或更高的優先級。你的'WHERE'等價於'LEN(col2)> 1或LEN(col3)> 1 OR(LEN(col4)> 1 AND col1 ='1')' – 2013-03-20 20:15:05
我很抱歉,但你對NULL,EMPTY menas不同事情,可以說,這個專欄沒有字符。 – RicEspn 2013-03-20 20:17:15