Булево выражение в SQL - PullRequest
2 голосов
/ 10 августа 2009

У меня есть два целых: @RecurremceTemp и @WeekDifference

Следующие ошибки строки:

PRINT @WeekDifference >= @RecurrenceTemp

с Incorrect syntax near '>'

И не выполнит.

Может кто-нибудь сказать мне, как написать такое логическое выражение для включения в оператор Select, т. Е .:

Select * 
FROM TableX 
WHERE somevariable = x 
and @WeekDifference >= @RecurrenceTemp

Ответы [ 3 ]

2 голосов
/ 10 августа 2009

Предикаты нельзя использовать в выражениях, только в IF и WHILE и CASE WHEN:

PRINT CASE WHEN @WeekDifference >= @RecurrenceTemp THEN 1 ELSE 0 END
0 голосов
/ 10 августа 2009

Ваш запрос должен работать просто отлично.

Причина сбоя оператора print заключается в том, что SQL Server обрабатывает результаты логических выражений совершенно иначе, чем другие типы данных. См. Операторы :

В отличие от других типов данных SQL Server, Логический тип данных не может быть указан в качестве типа данных столбца таблицы или переменная, и не может быть возвращена в набор результатов.

0 голосов
/ 10 августа 2009

Возвращает -1, 0 или 1 из оператора CASE, в зависимости от сравнения. В SQL Sevrer отсутствует логический тип данных. Ближайший тип данных - BIT, который может иметь значение 1, 0 или ноль.

EDIT:

Ваш оператор SQL

Select * 
FROM TableX 
WHERE somevariable = x 
and @WeekDifference >= @RecurrenceTemp

выберет все поля из TableX, где somevariable = x и значение переменной WeekDifference больше или равно значению переменной RecurrenceTemp. Разве это не то, что вы хотите?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...