mysql isnull用法講解 MySQL 可以使用 ISNULL() 函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點(diǎn)不同。 我們先來看幾個(gè)is null sql用法: select * from newtable where name is null //取得newtable表中name為null值的所有數(shù)據(jù) select * from tbas_table
mysql isnull用法講解
MySQL 可以使用 ISNULL() 函數(shù)。不過它的工作方式與微軟的 ISNULL() 函數(shù)有點(diǎn)不同。
我們先來看幾個(gè)is null sql用法:
select * from newtable where name is null //取得newtable表中name為null值的所有數(shù)據(jù)
select * from tbas_table where title not is null //取得tbas_table表中title字段不為null的所有數(shù)據(jù)
再看如下語句:
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 數(shù)據(jù),其中 describle 列只有一條是 null 值。也就是 describle 列的索引會(huì)存儲(chǔ)此列的 1025014 條記錄的信息,只有一條沒有存。在選擇怎么的時(shí)候, DB2 優(yōu)化器會(huì)試著用這樣兩種方式,第一種是從表中取出每條記錄,然后看它的 describle 值是否為空。第二種是,先從索引找到 describle 列所有非空的數(shù)據(jù)在表中的位置,然后在掃描表時(shí),如碰到這些位置,則不用取出數(shù)據(jù)判斷是否為空,直接跳到下一條記錄。
is not null 高效率應(yīng)用:
有些地方有這樣的說法,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 ,,并不是如網(wǎng)上所說的 is null 或者 is not null 不能利用索引,而是在不同的表數(shù)據(jù)結(jié)構(gòu)環(huán)境下,有可能會(huì)利用索引有可能不利用索引,而決定如何執(zhí)行查詢的標(biāo)準(zhǔn)就是性能。
擴(kuò)展閱讀:
is null 是判斷值是不是null,用=null則是跟null進(jìn)行比較運(yùn)算,而null跟任何值作比較運(yùn)算結(jié)果都是false,也就不會(huì)有任何查詢紀(jì)錄。
比如你有條記錄值是null,用is null能查出來,用=null就不會(huì)返回任何結(jié)果。
注:更多精彩文章請(qǐng)關(guān)注三聯(lián)編程教程欄目。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com