Написать условное предложение из переменной в SQL

#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'