/*
这里有一个表,我要实现的目的是,通过输入一个VID参数,如果这个参数为空就查询所有记录,如果不为空就查询,这个参数
的值(不能用动太语句)
*/create table sel(
VID int,
Vname varchar,
)
insert into sel select 1,'aa'
union all select 2 , 'bb'
union all select 3 , 'cc'

解决方案 »

  1.   

    select VID from sel where VID like '%'+值+'%'
      

  2.   

    select VID from sel where VID like '%'+值+'%'
      

  3.   

    create table sel(
    VID int,
    Vname varchar(2),
    )
    insert into sel select 1,'aa'
    union all select 2 , 'bb'
    union all select 3 , 'cc'declare @vid int
    --set @vid=1
    --1.(推荐)
    if isnull(@vid,0)>0
    select * from sel
    else 
    select * from sel where vid=@vid--2.(vid有非空约束时)
    select * from sel where vid=isnull(@vid,vid)
    drop table sel
      

  4.   


    select * from sel where @vid is null or vid=@vid 
      

  5.   

    code=SQL]
    DECLARE @sql NVARCHAR(200);SET @sql = 'SELECT * FROM sel where 0=0 '
    IF @ID IS NOT NULL
    SET @sql = @sql + ' AND vid = ' + CAST(@VID as nvarchar);
    execute (@sql);[/code]