#sql #sql-server #string #if-statement #dynamic-sql
#sql #sql-сервер #строка #if-оператор #динамический-sql
Вопрос:
Я пытаюсь выполнить этот условный оператор из строки, но я всегда получаю ошибки.
Есть ли способ CAST
CONVERT
преобразовать эту переменную в логическую строку?
Я использую SQL Server 2000
Declare @myQuery varchar(100)
SET @myQuery= '3043=3043 OR ( 3043=97 AND 0=8065 ) OR 3043=1853 OR 3043=5749'
if(@myQuery)
select 'ok'
Я хочу выполнить это:
Комментарии:
1. SQL Server 2000? Пожалуйста, объясните, почему вы используете программное обеспечение, которое не поддерживалось почти десять лет.
Ответ №1:
Эти условия должны быть указаны в where
предложении, чтобы они были правильно интерпретированы. Что-то вроде:
declare @myquery varchar(100)
set @myquery = '3043 = 3043 or (3043 = 97 and 0=8065) or 3043 = 1853 or 3043 = 5749'
exec('select ''ok'' where ' @myquery)
Ответ №2:
Если вы хотите использовать его в условии IF, вам нужно установить флаг с помощью sp_executesql, как показано ниже:
Declare @myQuery nvarchar(100)
Declare @flag tinyint
SET @myQuery= 'select @flag = 1 where 3043=3043 OR ( 3043=97 AND 0=8065 ) OR 3043=1853 OR 3043=5749'
exec sp_executesql @myQuery, N'@flag tinyint output', @flag = @flag output
if(@flag = 1)
select 'ok'