2014-09-02 82 views
1

我有關於NULL和''(空)數據的問題。 下面是查詢空和空記錄查詢

with tempCTS 
as(
select null as [blank]) 
select * from tempCTS t 

輸出爲null

另一個查詢與空管檢查

with tempCTS 
as(
select null as [blank]) 
select * from tempCTS t where t.blank <> '' 

輸出繼電器是什麼

我的問題是,爲什麼空記錄不取一次黑色勾選放置

PS: - 我需要空和數據記錄,但沒有空字符串

在此先感謝。

+0

你需要使用ISNULL或爲空,這取決於什麼DBMS您使用檢查空 – Sathya 2014-09-02 06:39:21

+0

哪個DBMS ????? – 2014-09-02 06:41:16

+0

sql server 2012 – 2014-09-02 06:42:45

回答

3

Null值不是(icluding空字符串)一個普通的字符串,數字等意味着 「未知」, 「不要緊」 等等。這就是爲什麼

null <> '' 

不是非此即彼真正 - 它再次(還有什麼它可能是?試想象比較像如果我不知道什麼<>''。結果是我不知道什麼,沒有數據可以說是真的或假的)。所以

select ... 
    where null <> '' 

不返回任何記錄。爲了測試空用爲空

with 
    tempCTS as (
     select null as [blank]) 
    select * 
    from tempCTS t 
    where t.blank is null -- <- Is null 

https://en.wikipedia.org/wiki/Null_(SQL)

+0

因此,如果我們需要空記錄,那麼我們總是需要指定「空」。 @Dmitry Bychenko – 2014-09-02 06:50:27

+0

@Amit Soni:是的,根據SQL 92標準,'null'或'not null' – 2014-09-02 06:51:47

+0

謝謝。我知道了@Dmitry Bychenko – 2014-09-02 07:09:38