我試圖讓DISTINCT和NOT NULL值,但是這似乎並沒有工作:爲什麼我的查詢返回空值,當我有一個NOT NULL子句我的WHERE語句
SELECT DISTINCT ITEM
FROM TABLE
WHERE ITEM IS NOT NULL
這將返回DISTINCT值,但它也返回NULL VALUES。
樣品:
ITEM
a
a
b
b
c
c
NULL
輸出:
a
b
c
NULL
我試圖讓DISTINCT和NOT NULL值,但是這似乎並沒有工作:爲什麼我的查詢返回空值,當我有一個NOT NULL子句我的WHERE語句
SELECT DISTINCT ITEM
FROM TABLE
WHERE ITEM IS NOT NULL
這將返回DISTINCT值,但它也返回NULL VALUES。
樣品:
ITEM
a
a
b
b
c
c
NULL
輸出:
a
b
c
NULL
嘗試此。 「不是NULL」和「IS NULL」不適用於空白值。如果列允許空白,您可以覆蓋兩者。
SELECT
DISTINCT item FROM table
WHERE
ISNULL(item,'') <> ''
是的,但爲什麼這個空值會導致NULL或「NULL」輸出? – 2011-06-02 16:25:01
如果您發佈代碼,XML或數據樣本,**請**在文本編輯器中突出顯示這些行,然後單擊編輯器工具欄上的「代碼樣本」按鈕(「{}」)以精確地設置格式和語法突出顯示它! – 2011-06-02 16:30:35
此where子句*將過濾BLANK值*和NULL值。但是,它不會過濾'NULL'值。我很困惑。 – 2011-06-02 16:32:33
該語句將返回a b c
除非你有串 NULL不是symbol
列:
SELECT DISTINCT ITEM FROM TABLE WHERE ITEM IS NOT NULL
爲了驗證這一點,請嘗試以下
--check for
SELECT DISTINCT ITEM FROM TABLE WHERE ITEM = 'NULL'
--modify original query
SELECT DISTINCT ITEM FROM TABLE WHERE NULLIF(ITEM, 'NULL') IS NOT NULL
您是不是指「NULLIF(ITEM,'NULL')<>'NULL'? – 2011-06-02 16:51:18
@Ben Thul:NULLIF會將字符串'NULL'更改爲ymbol/value NULL,所以這可以。 – gbn 2011-06-02 16:53:34
啊...你是我有ISNULL在我的腦海中 – 2011-06-03 16:40:17
檢查Item是Varchar類型,並且存儲值「NULL」。如果是這樣,請嘗試下面給出的查詢:
select distinct item from table where ISNULL(item,'')<>'' and item <> "NULL"
該條款過於複雜,也將*禁止空白字段*!我認爲'ITEM <>'NULL'和ITEM不是NULL'可能更適合這裏。 – 2011-06-02 16:28:16
您的查詢沒有錯。我懷疑你的數據。試試這個where子句。 'WHERE ITEM NOT NULL AND ITEM'''''' – 2011-06-02 16:20:52
你接受的答案無法解釋你說你得到的結果。 'ITEM'是'varchar(max)'列,之前是'text'?如果是這樣[看到這個問題](http://stackoverflow.com/q/10295771/73226) – 2012-04-29 09:58:04