可以用case 语句来实现

解决方案 »

  1.   

    LoveSQL(ligg) 麻烦您能不能具体语句详细一点呢?多谢!
      

  2.   

    你可以把要执行的SQL 语句拼接成字符串
    然后用EXEC来执行
      

  3.   

    lcriver(笑三少) ,在存储过程里,可以使用exec是吗?
    对存储过程确实比较生疏,手边一本书讲得太简单,请你讲得详细一点,谢谢!
      

  4.   

    可以啊
    你可以参照下面的语句写一个 
    在pubs库里
    DECLARE @title_id  AS NVARCHAR(50)
    DECLARE @SQLstr AS NVARCHAR(400)
    Set @title_id="PS3333"
    SET @SQLstr="select * from titleauthor Where title_id='" + @title_id+"'"
    Exec (@SQLstr)
      

  5.   

    --像这种动态条件选择的最好用动态语句了:
    declare @sql varchar(4000)
    set @sql='select id,userid,type,number,brand,writetime,corporation,free,pic from stock where 1=1 and '
    if @seek = '1'   ----如果是精确查询
    @sql=@sql+'type='+@type+'and '
    else             ----如果是模糊查询
    @sql=@sql+'type='+@type+'% and '
    if @brand<>''   ----如果用户输入了品牌
    @sql=@sql+'brand='+@brand+'and '
    if @class<>''   ----如果用户选择了类型
    @sql=@sql+'classcode='+@class+'and '
    set @sql=left(@sql,len(@sql)-5)
    exec (@sql)
      

  6.   

    对于此题'where 1=1 and '中的'1=1 and'可以去掉,因为至少会有一个条件的!即:
    declare @sql varchar(4000)
    set @sql='select id,userid,type,number,brand,writetime,corporation,free,pic from stock where '
    if @seek = '1'   ----如果是精确查询
    @sql=@sql+'type='+@type+'and '
    else             ----如果是模糊查询
    @sql=@sql+'type='+@type+'% and '
    if @brand<>''   ----如果用户输入了品牌
    @sql=@sql+'brand='+@brand+'and '
    if @class<>''   ----如果用户选择了类型
    @sql=@sql+'classcode='+@class+'and '
    set @sql=left(@sql,len(@sql)-5)
    exec (@sql)
      

  7.   

    CREATE PROCEDURE  SuperSeekProduct 
    @brand  varchar (50), ----品牌
    @type varchar (50),   ----型号
    @class varchar (50),  ----类型
    @time varchar (50),   ----时间段
    @seek varchar (50)    ----是精确查询?模糊查询
    ASdeclare @a varchar(100),@b varchar(100),@c varchar(100)
    if @seek = '1'   ----如果是精确查询
    begin set @a = @type end
    else             ----如果是模糊查询
    begin set @a =@type +'%'  end
    if @brand<>''   ----如果用户输入了品牌
    begin set @b = @brand end
    else
    begin set  @b ='%' end
    if @class<>''   ----如果用户选择了类型
    begin set  @c = @class end
    else 
    begin set  @c='%' end
    select id,userid,type,number,brand,writetime,corporation,free,pic from stock 
    where type like @a and brand like @b and classcode  like @cgo