Office中國(guó)論壇/Access中國(guó)論壇

 找回密碼
 注冊(cè)

QQ登錄

只需一步,快速開始

返回列表 發(fā)新帖
查看: 2577|回復(fù): 5
打印 上一主題 下一主題

[Access本身] 容易被誤解的Null

[復(fù)制鏈接]

點(diǎn)擊這里給我發(fā)消息

跳轉(zhuǎn)到指定樓層
1#
發(fā)表于 2015-7-10 10:12:27 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
本帖最后由 盜夢(mèng) 于 2015-7-10 10:17 編輯

在查詢中,Null 是不參與字符運(yùn)算。
因?yàn)樗皇亲址?這句話好冷~)

這個(gè)是看到一個(gè)網(wǎng)友的求助才發(fā)現(xiàn)的。
他有這么一個(gè)表(我們就不要吐槽他的表設(shè)計(jì)了):

然后他建了一個(gè)查詢,查詢?nèi)缦拢?br />


他要找開頭不是 J2015060113-02 的記錄。
看上去條件是沒錯(cuò)的,但是卻得不到任何結(jié)果,和預(yù)想的結(jié)果相差太多了。

原因就是like條件判斷是只判斷字符串的。而其中沒有數(shù)據(jù)的記錄,該值是null,所以才查詢不到。
把條件改成  Null  or  Not  Like "J2015060113-02*"   即可。
建議,表設(shè)計(jì)的時(shí)候,出于優(yōu)化考慮,文本型字段默認(rèn)值設(shè)為 "" ,避免出現(xiàn)null。


在vba中,Null 也不參與字符運(yùn)算
它本來(lái)就不是字符! (Null:冤啊~)

常見錯(cuò)誤:判斷一個(gè)文本框是否為空
錯(cuò)誤代碼:If  文本框 = ""  then

上面的寫法,如果文本框沒東西的話,就會(huì)提示錯(cuò)誤
這個(gè)文本框不填東西的時(shí)候,值是null。null不是空字符串。
正確寫法1:If  nz(文本框)="" then
正確寫法2:If  len(文本框)=0 then

nz函數(shù)是用于轉(zhuǎn)換null值為其他值,沒寫其他值,就默認(rèn)空字符串。
null值長(zhǎng)度為0,所以也可以用len函數(shù)處理。


總結(jié)
Null是一種值類型,不是字符串類型。
Null 不等于 "" (空字符串)

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號(hào)?注冊(cè)

x
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 分享淘帖 訂閱訂閱
2#
發(fā)表于 2015-7-10 10:36:33 | 只看該作者
{:soso_e100:}學(xué)習(xí)!!

點(diǎn)擊這里給我發(fā)消息

3#
發(fā)表于 2015-7-10 12:48:53 | 只看該作者
NULL本來(lái)就不是字符,說得沒錯(cuò)。

點(diǎn)擊這里給我發(fā)消息

4#
 樓主| 發(fā)表于 2015-7-10 12:51:52 | 只看該作者
輕風(fēng) 發(fā)表于 2015-7-10 12:48
NULL本來(lái)就不是字符,說得沒錯(cuò)。

掃盲貼
5#
發(fā)表于 2015-7-10 13:05:04 | 只看該作者
本帖最后由 ganlinlao 于 2015-7-10 13:11 編輯

菜鳥弱弱的理解:
Null是一種說不清楚的狀態(tài)

這在哲學(xué)上有一種很玄的概念叫“虛無(wú)"
在指針上,Null一般用來(lái)表示空指針,也就是vbnullptr
空指針是指一個(gè)指針變量指向的內(nèi)存地址不存在。
在查詢中,Null就是指返回值是空指針,也就是返回值是不存在
因?yàn)樵赩BA中沒有定義vbnullptr=0,所以access提供一個(gè)Nz()函數(shù)。
為什么會(huì)這樣?
因?yàn)関ba是不允許明面上使用指針操作。但recordset卻是一個(gè)必須依賴指針操作的,而access沒有recordset幾乎就失去了
存在的意義,所以只有access提供了Nz(),excel和word是不提供的(當(dāng)然可以用別的方式來(lái)實(shí)現(xiàn))。

站在這個(gè)角度,可以很容易看出,sub過程就是一個(gè)返回值為Null的fucntion

Null在字符串的表現(xiàn),很容易讓人一頭霧水的
空字符串是字符串。它有一個(gè)真正的名字vbnullchar
Null在字符串的真正的名字叫vbnullstring。

點(diǎn)擊這里給我發(fā)消息

6#
 樓主| 發(fā)表于 2015-7-10 13:12:07 | 只看該作者
ganlinlao 發(fā)表于 2015-7-10 13:05
菜鳥弱弱的理解:
Null是一種說不清楚的狀態(tài)
這在哲學(xué)上有一種很玄的概念叫“虛無(wú)"

就是什么都沒有。哈哈。空字符串至少還是一個(gè)字符串
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則

QQ|站長(zhǎng)郵箱|小黑屋|手機(jī)版|Office中國(guó)/Access中國(guó) ( 粵ICP備10043721號(hào)-1 )  

GMT+8, 2025-7-17 05:01 , Processed in 0.147181 second(s), 30 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回復(fù) 返回頂部 返回列表