У меня есть строка со следующим значением:
COND_STRING = '(TRUE AND FALSE AND TRUE) OR FALSE'
Как я могу оценить результат, если он верен или ложен (1 или 0) в хранимой процедуре SQL Server?
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;
Я могу думать только об этом. Использование 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)
Похожие вопросы
Новые вопросы
sql
Язык структурированных запросов (SQL) - это язык запросов к базам данных. Вопросы должны включать примеры кода, структуру таблицы, примеры данных и тег для используемой реализации СУБД (например, MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2 и т. Д.). Если ваш вопрос относится исключительно к конкретной СУБД (использует определенные расширения / функции), используйте вместо этого тег этой СУБД. Ответы на вопросы, помеченные SQL, должны использовать стандарт ISO / IEC SQL.