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

請教一個null值的問題

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



註冊時間: 2008-05-08
文章: 119
來自: 台灣

第 1 樓

發表發表於: 星期一 十月 20, 2008 11:50 am    文章主題: 請教一個null值的問題 引言回覆

SQL下寫一支自訂函數如下:
CREATE FUNCTION RET_PAYIN_MEY
(@_MEN_CODE1 CHAR(3),@_PAYIN_KD1 CHAR(2))
RETURNS FLOAT AS
BEGIN
DECLARE @_RET_MEY1 FLOAT
SELECT @_RET_MEY1=0
---
SELECT @_RET_MEY1 = SUM(MEY) FROM PAYIN WHERE MEN_CODE=@_MEN_CODE1 AND PAYIN_KD=@_PAYIN_KD1
方法1****這樣寫null值不會變0
BEGIN
IF @_RET_MEY1= NULL
SELECT @_RET_MEY1=0
END
RETURN @_RET_MEY1
END
方法2****要這樣才會變0
SELECT @_RET_MEY1= ISNULL(@_RET_MEY1,0)
RETURN @_RET_MEY1
END
我之前要清null值都用方法1,但是在寫這段程序用方法2才有辦法清null,是什麼原因呢?
回頂端
檢視會員個人資料 發送私人訊息
green



註冊時間: 2003-09-19
文章: 137


第 2 樓

發表發表於: 星期一 十月 20, 2008 2:45 pm    文章主題: 引言回覆

NULL 的比較,要使用isnull函式
不能使用邏輯運算子,會得到null
回頂端
檢視會員個人資料 發送私人訊息
kmkna1103



註冊時間: 2008-05-08
文章: 119
來自: 台灣

第 3 樓

發表發表於: 星期一 十月 20, 2008 2:50 pm    文章主題: 引言回覆

那代表我之前沒問題是僥倖了XD因為之前這樣下是沒發生過問題
CREATE FUNCTION RET_USE_QTY1
(@_STDATE1 CHAR(Cool,@_ETDATE1 CHAR(Cool,@_PROD_NO1 CHAR(20))
RETURNS NUMERIC(14,4) AS
BEGIN
DECLARE @_RET_QTY1 FLOAT,@_RET_QTY2 NUMERIC(14,4)
SELECT @_RET_QTY1=0,@_RET_QTY2=0
---製造需求
SELECT @_RET_QTY1=SUM(UNIT_QTY) FROM SCK,SCKL_A WHERE SCK.SCKNUM=SCKL_A.SCKNUM AND SCK_DATE>=@_STDATE1 AND SCK_DATE<=@_ETDATE1
AND PROD_NO=@_PROD_NO1
---發票出貨
SELECT @_RET_QTY2=SUM(QTY) FROM FUM,FUML WHERE FUM.FUM_NO=FUML.FUM_NO AND FUM_DATE>=@_STDATE1 AND FUM_DATE<=@_ETDATE1
AND PROD_NO=@_PROD_NO1
---
BEGIN
IF @_RET_QTY1=NULL
SELECT @_RET_QTY1=0
END
BEGIN
IF @_RET_QTY2=NULL
SELECT @_RET_QTY2=0
END

SELECT @_RET_QTY1=@_RET_QTY1+@_RET_QTY2
RETURN @_RET_QTY1
END
回頂端
檢視會員個人資料 發送私人訊息
green



註冊時間: 2003-09-19
文章: 137


第 4 樓

發表發表於: 星期一 十月 20, 2008 3:02 pm    文章主題: 引言回覆

是的~~
給你測個例子

代碼:

declare @abc char(10)
set @abc=null
print isnull(@abc,'null')
if @abc=null
   print 'null'
else
   print 'not null'
回頂端
檢視會員個人資料 發送私人訊息
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

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


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