VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

select空值的問題

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
xzg



註冊時間: 2010-07-26
文章: 29
來自: 深圳

第 1 樓

發表發表於: 星期一 八月 30, 2010 8:53 am    文章主題: select空值的問題 引言回覆

有個關於vfp中dbfselect空值的問題,小弟想把數據表中非空的數據讀入臨時表中,代碼如下:
select * from bgzl where !edi_no='' 兩個單引號中間沒有空格,這樣可以讀出非空數據
select * from bgzl where !edi_no='' 兩個單引號中間有空格,這樣就不可以讀數據

在sql中 讀非空不是就 select * from bgzl where !edi_no='' 這樣么,中間有空格的含義應該是該值為 空格 吧? 請各位大大指教一下,謝謝!

_________________
學習,學習,再學習
回頂端
檢視會員個人資料 發送私人訊息
pilipala



註冊時間: 2009-05-13
文章: 75


第 2 樓

發表發表於: 星期一 八月 30, 2010 9:11 am    文章主題: 引言回覆

請在 Help 中 查詢Empty() 函數 ~~
回頂端
檢視會員個人資料 發送私人訊息
syntech



註冊時間: 2003-05-16
文章: 4249
來自: Taipei,Taiwan

第 3 樓

發表發表於: 星期一 八月 30, 2010 9:16 am    文章主題: 引言回覆

正常人不會用 !edi_no='' ,通常會用 EDI_NO !=""

判斷是否空值,
LEN(ALLTRIM(EDI_NO)) != 0 ,!EMPTY(ALLTRIM(EDI_NO)) ,
也有人用.


還有 = 與 == 也不一樣, !(EDI_NO =='') 也可以用

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
xzg



註冊時間: 2010-07-26
文章: 29
來自: 深圳

第 4 樓

發表發表於: 星期一 八月 30, 2010 9:26 am    文章主題: 引言回覆

看來我有點不正常, Crying or Very sad Crying or Very sad .謝謝兩位大大的指導.
_________________
學習,學習,再學習
回頂端
檢視會員個人資料 發送私人訊息
syntech



註冊時間: 2003-05-16
文章: 4249
來自: Taipei,Taiwan

第 5 樓

發表發表於: 星期一 八月 30, 2010 10:06 am    文章主題: 引言回覆

兩個單引號中間有空格, 表示 edi_no=space(1), 那就不是 EMPTY(EDI_NO) 了
這也是為什麼我習慣上會加上ALLTRIM()的理由.


SQL 命令通常有習慣的寫法,
倒不是不用習慣的寫法就一定不對,
而是別人讀起來不順,不知道你倒底是語法錯誤還是怎樣,
而且也容易遇到不同的SQL 命令處理器,判斷成不正確的結果.

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
ckp6250



註冊時間: 2004-07-30
文章: 1645


第 6 樓

發表發表於: 星期一 八月 30, 2010 10:38 am    文章主題: 引言回覆

判斷空值時,別忘了 null
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
syntech



註冊時間: 2003-05-16
文章: 4249
來自: Taipei,Taiwan

第 7 樓

發表發表於: 星期一 八月 30, 2010 11:25 am    文章主題: 引言回覆

null 不一定等於 "",
"" 指的是 空字串, 但空字串不一定等於null,
empty() 和 isnull() 也不完全一樣.

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
ckp6250



註冊時間: 2004-07-30
文章: 1645


第 8 樓

發表發表於: 星期一 八月 30, 2010 2:45 pm    文章主題: 引言回覆

empty()
isnull()
isblank()

三位不一體?
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
syntech



註冊時間: 2003-05-16
文章: 4249
來自: Taipei,Taiwan

第 9 樓

發表發表於: 星期一 八月 30, 2010 2:55 pm    文章主題: 引言回覆

看你的工具.


不要把vfp的情況類比到其他sql server或是其他以sql 命令存取資料的工具.

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
garfield
Site Admin


註冊時間: 2003-01-30
文章: 2160


第 10 樓

發表發表於: 星期一 八月 30, 2010 5:05 pm    文章主題: 引言回覆

其實empty(字串)傳回.T. 並不一定真的是空字串,
你可以試一下
X=''
? empty(X)
Y=chr(10)
? empty(Y)

這是看了help才知道的知識.

_________________
利用>>搜尋<<的功能會比問的還要快得到答案.
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
richshih



註冊時間: 2007-10-11
文章: 153


第 11 樓

發表發表於: 星期一 八月 30, 2010 5:33 pm    文章主題: 引言回覆

ALLTRIM(EDI_NO) NOT LIKE ''
回頂端
檢視會員個人資料 發送私人訊息
fschern



註冊時間: 2003-10-12
文章: 34


第 12 樓

發表發表於: 星期日 九月 05, 2010 10:54 am    文章主題: 引言回覆

VFP之SELECT指令內的運算式會受SET EXACT指令限制
參閱下列範例:
A="123"
SET EXACT ON
? A="" &&.F.
? A="1" &&.F.
? A="123" &&.T.
SET EXACT OFF
? A="" &&.T.
? A="1" &&.T.
? A="123" &&.T.

樓主應該是使用了SET EXACT OFF的設定所以才會產生問題。
在SET EXACT OFF時要比對出真正的空字串欄位(不含NULL)時,可使用下列2種方式:
1. 欄位=SPACE(n) &&n=欄位寬度
2. EMPTY(欄位)

ISEMPTY()與ISBLANK()的規則不同,查詢HELP可得知。
ISBLANK()可用於判斷DBF中的logical或數值欄位是否曾經被replace過。(對於DATE,CHARACTER欄位就不適用)
例如:
CREATE CURSOR TEMP1 (AD D,BL L,CV N(10),DC C(10))
APPEND BLANK
? ISBLANK(AD),ISBLANK(BL),ISBLANK(CV),ISBLANK(DC) &&.T.,.T.,.T.,.T.
REPLACE aD WITH CTOD(" / / "),BL WITH .F.,CV WITH 0,DC WITH ""
? ISBLANK(AD),ISBLANK(BL),ISBLANK(CV),ISBLANK(DC) &&&&.T.,.F.,.F.,.T.
回頂端
檢視會員個人資料 發送私人訊息
garfield
Site Admin


註冊時間: 2003-01-30
文章: 2160


第 13 樓

發表發表於: 星期一 九月 06, 2010 2:46 pm    文章主題: 引言回覆

真空假空看空曾空已空.
令人空空.

_________________
利用>>搜尋<<的功能會比問的還要快得到答案.
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作