select语句中的条件,其中条件基于相同

时间:2011-10-13 07:04:20

标签: .net sql-server

我是MSSQL的新手。我需要在条件中基于相同的select语句中更改条件。 我尝试将where子句条件存储在一个变量中,并将该变量分配到select语句where子句中。

喜欢这个..

declare @test varchar(max);
declare @test1 varchar(max);
set @test=' id = 14';
select FirstName from tblUser where @test;

但它有些错误。

像:

Msg 4145, Level 15, State 1, Line 4
An expression of non-boolean type specified in a context where a condition is expected, near ';'.

请告诉我任何其他方式实施此流程......

...谢谢

2 个答案:

答案 0 :(得分:1)

您无法将整个条件存储在变量中以供执行,特别是如果它们包含列名称。

如果要使用动态SQL,可以执行此操作,但这会带来一系列复杂功能。 This文章是关于动态SQL(动态SQL的诅咒和祝福)的好读物。

但是,我会质疑你是否需要这样做。

答案 1 :(得分:0)

您可以使用动态SQL来完成此操作。有关更多信息,请参阅Obed的答案链接

    declare @test nvarchar(max);
    create table tblUser (id int, FirstName varchar(10))
    set @test=N' id = 14';
    set @test=N'select FirstName from tblUser where '+@test
    exec sp_executesql @test;

    drop table tblUser