我哪裏有conditions.How在一個T-SQL 條件表連接一臺使用存放在那裏條件在表中的動態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`
我怎麼能做到這樣的事情?
我哪裏有conditions.How在一個T-SQL 條件表連接一臺使用存放在那裏條件在表中的動態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`
我怎麼能做到這樣的事情?
我不認爲這是一個很好的想法,有很多因素可以打破你的查詢,在條件表上有正確的列,除了你需要處理的事實dynamic sql 。無論如何,這是你想要的東西的一種方法:
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)
如果你的條件被存儲在表中作爲有效的TSQL,那麼動態TSQL的方法是最好的一段路要走。
不知道它是否適合您,但如果您可以重新評估方法,則可能比存儲這樣的條件更好。例如:
select * from emp where [sal] BETWEEN @minSAL AND @maxSAL
這就要求你有2個輸入變量,你可以看到 - 但它會覆蓋所有3個鹼基(>,<,=)
只是取決於你傳遞的值。