Вы можете пойти с этим, дайте ему попробовать
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)
rextester: http://rextester.com/OJTIW53082
exectued запрос: SELECT * FROM #Test WHERE 22 BETWEEN 21 AND 50 and Value = '21 AND 50'
результаты:
+----------+-----------+
| Operator | Value |
+----------+-----------+
| BETWEEN | 21 AND 50 |
+----------+-----------+
, что и все 'оператора 'значения, которые вы рассматриваете в этом вопросе ?? –
@pratikgarg это может быть любой оператор SQL. МЕЖДУ, <, > В и т.д. – John
Так _every_ [задокументированы оператор] (https://msdn.microsoft.com/en-us/library/ms174986.aspx) является честной игры? Что будет содержать 'Value' для операторов' EXCEPT' и 'INTERSECT'? Или побитовое XOR? – HABO