У меня есть строка со следующим значением:

COND_STRING = '(TRUE AND FALSE AND TRUE) OR FALSE'

Как я могу оценить результат, если он верен или ложен (1 или 0) в хранимой процедуре SQL Server?

1
Teeko 13 Мар 2018 в 03:23

2 ответа

Лучший ответ

Хммм. . . Это сложно, учитывая, что SQL Server не поддерживает логические значения. Ты можешь сделать:

declare @new_cond = replace(replace(@cond_string, 'TRUE', '(1=1)'), 'FALSE', '(1=0)');

declare @sql = 'select @result = (case when @cond then 1 else 0 end)';
set @sql = replace(@sql, '@cond', @new_cond);

declare @result int;

exec sp_executesql @sql, N'@result int output', @result=@result output;
1
Gordon Linoff 13 Мар 2018 в 00:38

Я могу думать только об этом. Использование Dynamic SQL

declare @str varchar(100) = '(TRUE AND FALSE AND TRUE) OR FALSE'

select  @str = replace(replace(replace(replace(@str, 'TRUE', '1'), 'FALSE', 0), 'AND', '&'), 'OR', '|')

select  @str    = 'SELECT' + @str

print   @str
exec    (@str)
2
Squirrel 13 Мар 2018 в 00:37