如何搜索null字段? |
答題得分者是:timhuang
|
pcplayer99
尊榮會員 發表:146 回覆:790 積分:632 註冊:2003-01-21 發送簡訊給我 |
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
您好! 小弟以前有用ADOQuery試過,應該是不行,使用參數賦值的相關的code如下,結果會查不到任何的資料錄.
begin ADOQuery1.Close; ADOQuery1.SQL.Text := 'Select * From 客戶 where 日期=:DATE'; ADOQuery1.Parameters.ParamByName('DATE').Value := Edit1.Text; //或者ADOQuery1.Parameters.ParamByName('DATE').Value := Null; ADOQuery1.Open; end;當Edit1.Text中沒有填入任何資料,保持空白時,就查不到任何資料,所以小弟在查詢欄位值為Null的時候,都是直接在SQL中下is Null的語法. 小弟淺見, 歡迎各位前輩指正! 參考看看! ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟 |
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
應該是沒有辦法透過 = 符號來取得的, 基本上 null 在資料中的行為就不是一種值(value), 所以不能用 = 來判讀, 而會使用 is null 的判斷式來找出, 原因其實是因為 null 不是一個正常資料表應該有的值, 所以也就不能用 = 來找出了. 在多數的資料庫中多提供了 isnull 的函數來將 null 改為某一 value, 使得查詢查條件比較容易實現, 但是不要忘記, 使用了函數的話, 會使得該 sql command 的效能降低, 造成處理速度變慢, 這是會犠牲掉的地方, 所以非新增欄位, 儘量不要使用 null 存在資料表中, 讓資料表中的資料都是有值(value)的, 才不會有查詢上的困難! 不理想但可以解決的方式為:
select * from MyTable where IsNull(MyField, '') = ''
但會和 '' (空字串) 分辨不出來, 所以要將 null 改為什麼值, 就看你的設計了, 但請注意, 效能降低的問題!!
|
pcplayer99
尊榮會員 發表:146 回覆:790 積分:632 註冊:2003-01-21 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |