存储表中的where-conditions以在动态sql语句中使用

时间:2013-03-21 20:38:12

标签: sql-server tsql

我有一个表有条件的表。如何在t-sql中连接 条件表

SAL
sal >100
sal < 100
sal=500

SELECT SAL  into #sal from condtbl
Select Top 1 @sal = event From #sal

`select * from emp where @sal`

我怎样才能完成这样的事情?

2 个答案:

答案 0 :(得分:0)

我不认为这是一个非常好的主意,除了你需要处理{{{{{{{{ 3}}。无论如何,这是你想要的一种方法:

DECLARE @sal NVARCHAR(MAX), @sql NVARCHAR(MAX)

SELECT @sal = SAL
FROM condtbl
WHERE IdCondition = 1 -- an example, don't rely on TOP 1 without ORDER BY

SET @sql = 'SELECT * FROM emp WHERE ' + @sal

EXEC(@sql)

答案 1 :(得分:0)

如果您的条件作为有效的tsql存储在表中,那么动态tsql方法是最好的方法。

不确定它是否适合您,但如果您可以重新评估该方法,可能会比存储这样的条件更好。例如:

select * from emp where [sal] BETWEEN @minSAL AND @maxSAL

这将要求你有2个输入变量 - 但是它会覆盖所有3个基础(>,<,=),这取决于你传递的值。