简单问题做了个小软件 需要通过输入字符来查询 
SQL语句是写好的 但是现在想问下 当我不输入字符如何完成查询呢?(除了删除这条语句外还有没有别的办法。)select Z.*,L.* 
from Z,L 
where Z.列车名称=L.列车名称 and 位置='"+ Edit1->Text + "'and 情况='"+ Edit2->Text + "';
(目的是让用户在Edit1 Edit2中填写情况后查询。但是如果用户在Edit2中不填写东西的话 就无法正常查询了。)

解决方案 »

  1.   

    null 的判断  where colname is null 
    如果用 where colname='' 是不行的。
      

  2.   

    where 位置=isnull(@变量1,位置) and 情况=isnull(@变量2,情况)
      

  3.   

    create proc pr_name(@name1 char(10)=null)
    as
    begin
        select Z.*,L.* 
       from Z,L 
       where Z.列车名称=L.列车名称 and 位置=isnull(@name,位置)
    end
    exec pr_name
      

  4.   

    里面的@变量 就是我Edit1(或2)了吧? 
      

  5.   


    select ZSQK.*,LCQK.* 
    from ZSQK,LCQK 
    where ZSQK.列车名称=LCQK.列车名称 
           and 列车与测点的位置情况=isnull(@"+ Edit1->Text + ",列车与测点的位置情况) 
          and 噪声种类=isnull(@"+ Edit3->Text + ",噪声种类);//没写单引号。双引号是我变成软件引数值用的我是这么写的
    但貌似不行啊。
      

  6.   

    在最原始的查询中,因为是用and连接的,所以如果我在Edit1和Edit2中都有填写数值,那么最后查询的结果没问题。但现在的问题是 如果只在Edit1中填写数值,Edit2空着,这么查询的话,什么结果都没有。所以想请问怎么克服这个难题,从而实现 即使Edit2空着,查询也会按照Edit1中给的数值进行查询。
    先前试过用or来连接 进行查询 查询结果很混乱 失败了。