表T:
单号 varchar
数量 int
时间 datetime要求如下:当“时间”为NULL时,显示所有记录;当“时间”有数值时,对该数值进行模糊查询。请问应该怎么写呢?有人说用case,但是我刚学SQL,还不知道应该怎么写,请大家写一句给我参考一下,谢谢:-)

解决方案 »

  1.   

    where (@datetime is null or datetime=@datetime)
      

  2.   

    产生SQL语句时判断“时间“下就得了
    然后再连接数据库查询就是了
      

  3.   

    where (@datetime is null or datetime like ‘%‘+datetime+%’’)
      

  4.   

    提示 ‘%‘+datetime+%’’有语法错误!
      

  5.   

    where 时间 like isnull(@datetime,'%')
      

  6.   

    where (@datetime is null or datetime like ('%'+@datetime+'%'))
      

  7.   


    where (@datetime is null or datetime like ('%'+Convert(varchar(50),@datetime)+'%'))
      

  8.   

    ALTER PROCEDURE dbo.存储过程2
    (@datetime datetime)
    AS SELECT ID, data, datetime,FROM dbo.T
    where (@datetime is null or datetime like ('%'+@datetime+'%'))目前里面有两条数据:
    ID    data   datetime
    ID001  500  2007-05-05
    ID002  500  2007-05-04现在不出错了,但是当我输入“05-04”时,无法查询到数据!这是怎么回事呢??
      

  9.   

    也就是说,Like 好像不起作用了!
      

  10.   

    SQL 我贴上来了,大家帮我看看啊!哪里出问题了?
      

  11.   

    where (@datetime is null or (convert(char(20),datetime ,120) like ('%'+@datetime+'%')))
      

  12.   

    alter PROCEDURE dbo.存储过程2
    @datetime varchar
    AS 
    SELECT ID, data, [datetime] FROM dbo.T
    where (@datetime is null or [datetime] like ('%'+@datetime+'%'))