我是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 ';'.
请告诉我任何其他方式实施此流程......
...谢谢
答案 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