  | 
				VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.   
				 | 
			 
		 
		 
	
		| 上一篇主題 :: 下一篇主題   | 
	 
	
	
		| 發表人 | 
		內容 | 
	 
	
		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 文章: 4252 來自: 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. 想學習系統規劃,想找系統架構的顧問
 
 
請聯絡我們,也許我們幫得上忙 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		xzg
 
 
  註冊時間: 2010-07-26 文章: 29 來自: 深圳
  第 4 樓
  | 
		
			
				 發表於: 星期一 八月 30, 2010 9:26 am    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				看來我有點不正常,      .謝謝兩位大大的指導. _________________ 學習,學習,再學習 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		syntech
 
 
  註冊時間: 2003-05-16 文章: 4252 來自: Taipei,Taiwan
  第 5 樓
  | 
		
			
				 發表於: 星期一 八月 30, 2010 10:06 am    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				兩個單引號中間有空格, 表示 edi_no=space(1), 那就不是 EMPTY(EDI_NO) 了
 
這也是為什麼我習慣上會加上ALLTRIM()的理由.
 
 
 
SQL 命令通常有習慣的寫法,
 
倒不是不用習慣的寫法就一定不對,
 
而是別人讀起來不順,不知道你倒底是語法錯誤還是怎樣,
 
而且也容易遇到不同的SQL 命令處理器,判斷成不正確的結果. _________________ 如果公司有下列困擾:
 
1. 找不到便宜,快速,簡易的 生產排程軟體
 
2. 不知道如何快速排定 採購計劃
 
3. 成本抓不準,自己算比軟體算有用
 
4. 想學習系統規劃,想找系統架構的顧問
 
 
請聯絡我們,也許我們幫得上忙 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		ckp6250
 
 
  註冊時間: 2004-07-30 文章: 1645
 
  第 6 樓
  | 
		
			
				 發表於: 星期一 八月 30, 2010 10:38 am    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				| 判斷空值時,別忘了 null | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		syntech
 
 
  註冊時間: 2003-05-16 文章: 4252 來自: Taipei,Taiwan
  第 7 樓
  | 
		
			
				 發表於: 星期一 八月 30, 2010 11:25 am    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				null 不一定等於 "",
 
"" 指的是 空字串, 但空字串不一定等於null,
 
empty() 和 isnull() 也不完全一樣. _________________ 如果公司有下列困擾:
 
1. 找不到便宜,快速,簡易的 生產排程軟體
 
2. 不知道如何快速排定 採購計劃
 
3. 成本抓不準,自己算比軟體算有用
 
4. 想學習系統規劃,想找系統架構的顧問
 
 
請聯絡我們,也許我們幫得上忙 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		ckp6250
 
 
  註冊時間: 2004-07-30 文章: 1645
 
  第 8 樓
  | 
		
			
				 發表於: 星期一 八月 30, 2010 2:45 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				empty() 
 
isnull()
 
isblank()
 
 
三位不一體? | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		syntech
 
 
  註冊時間: 2003-05-16 文章: 4252 來自: Taipei,Taiwan
  第 9 樓
  | 
		
			
				 發表於: 星期一 八月 30, 2010 2:55 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				看你的工具.
 
 
 
不要把vfp的情況類比到其他sql server或是其他以sql 命令存取資料的工具. _________________ 如果公司有下列困擾:
 
1. 找不到便宜,快速,簡易的 生產排程軟體
 
2. 不知道如何快速排定 採購計劃
 
3. 成本抓不準,自己算比軟體算有用
 
4. 想學習系統規劃,想找系統架構的顧問
 
 
請聯絡我們,也許我們幫得上忙 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		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    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				真空假空看空曾空已空.
 
令人空空. _________________ 利用>>搜尋<<的功能會比問的還要快得到答案. | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
  	 
	    
  	   | 
 	
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
  | 
   
  
		 |