mysql isnull用法講解
MySQL 可以使用 ISNULL() 函數。不過它的工作方式與微軟的 ISNULL() 函數有點不同。
我們先來看幾個is null sql用法:
select * from newtable where name is null //取得newtable表中name為null值的所有數據
select * from tbas_table where title not is null //取得tbas_table表中title字段不為null的所有數據
再看如下語句:
SELECT `click`,`title`,`created` FROM dcfsda_table WHERE click is not null
再看如下語句:
SELECT `id`,`title`,`describle` FROM bnsdh_table WHERE describle is not null
我們可以看到此表有 1025014 數據,其中 describle 列只有一條是 null 值。也就是 describle 列的索引會存儲此列的 1025014 條記錄的信息,只有一條沒有存。在選擇怎麼的時候, DB2 優化器會試著用這樣兩種方式,第一種是從表中取出每條記錄,然後看它的 describle 值是否為空。第二種是,先從索引找到 describle 列所有非空的數據在表中的位置,然後在掃描表時,如碰到這些位置,則不用取出數據判斷是否為空,直接跳到下一條記錄。
is not null 高效率應用:
有些地方有這樣的說法,is not null 不能利用索引,所以要將其改寫成其他語句,以便能夠利用索引提高效率。下面是測試情況:
SQL 語句: SELECT click FROM bsga_table WHERE click is not null
改寫後的SQL 語句 : SELECT click FROM bsga_table WHERE click > 0 and click < 100001
無論是 IS NULL 還是 IS NOT NULL ,並不是如網上所說的 is null 或者 is not null 不能利用索引,而是在不同的表數據結構環境下,有可能會利用索引有可能不利用索引,而決定如何執行查詢的標准就是性能。
擴展閱讀:
is null 是判斷值是不是null,用=null則是跟null進行比較運算,而null跟任何值作比較運算結果都是false,也就不會有任何查詢紀錄。
比如你有條記錄值是null,用is null能查出來,用=null就不會返回任何結果。
注:更多精彩文章請關注三聯編程教程欄目。