[英]Dynamic SQL based on values in table
我需要動態創建SQL,我有一個像這樣的表:
Operator Value
BETWEEN 0 AND 21
BETWEEN 21 AND 50
我需要編寫一個將基本執行的查詢:
SELECT * FROM tbl
WHERE 22 Operator Value
這應該返回上表的第二行。
您可以嘗試一下,嘗試一下
if object_id('tempdb..#Test') is not null drop table #Test
create table #Test (Operator nvarchar(20), Value nvarchar(20))
insert into #Test (Operator, Value)
values
('BETWEEN', '0 AND 21'),
('BETWEEN', '21 AND 50')
declare @sql nvarchar(max) = 'SELECT * FROM #Test WHERE 22 '
declare @sqlHelper nvarchar(max) =
(select Operator + ' ' + Value
+ ' and Value = '''+Value+''''
from #Test
where 22 <= Cast(RIGHT(Value, 2) as int) and
22 >= Cast(LEFT(Value, 2) as int))
select @sql + @sqlHelper
execute (@sql + @sqlHelper)
extrester: http: //rextester.com/OJTIW53082
執行的查詢是: SELECT * FROM #Test WHERE 22 BETWEEN 21 AND 50 and Value = '21 AND 50'
結果:
+----------+-----------+
| Operator | Value |
+----------+-----------+
| BETWEEN | 21 AND 50 |
+----------+-----------+
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.