線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1139
推到 Plurk!
推到 Facebook!

如何搜索null字段?

答題得分者是:timhuang
pcplayer99
尊榮會員


發表:146
回覆:790
積分:632
註冊:2003-01-21

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-08-21 23:52:13 IP:61.141.xxx.xxx 未訂閱
一个表,有些记录里的某个字段的值为 Null。如果要把这条记录搜索出来,应该写这样的SQL语句: select * from MyTable where MyField is Null 但是,如果我用TADODataSet.CommandText:='select * from MyTable where MyField=:MyField'; 然后通过为它的参数赋值的方式来搜索Null字段,似乎不可能达到?
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-08-22 01:17:05 IP:63.84.xxx.xxx 未訂閱
您好!    小弟以前有用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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-08-25 23:06:59 IP:61.62.xxx.xxx 未訂閱
應該是沒有辦法透過 = 符號來取得的, 基本上 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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-08-26 11:22:56 IP:61.141.xxx.xxx 未訂閱
谢谢!!
系統時間:2024-07-01 20:38:35
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!