Можно ли использовать предложение IF в предложении WHERE в MS SQL?
Пример:
WHERE
IF IsNumeric(@OrderNumber) = 1
OrderNumber = @OrderNumber
ELSE
OrderNumber LIKE '%' + @OrderNumber + '%'
sql
sql-server
tsql
Брайан Рот
источник
источник
CASE
является подходящим решением в большинстве случаев. В моем случае я хотел изменить оператор сравнения и, следовательно, я использовал следующий подход.Вы должны быть в состоянии сделать это без каких-либо IF или CASE
В зависимости от разновидности SQL вам может потребоваться настроить приведение номера заказа к INT или VARCHAR в зависимости от того, поддерживаются ли неявные приведения.
Это очень распространенный метод в предложении WHERE. Если вы хотите применить некоторую логику «ЕСЛИ» в предложении WHERE, все, что вам нужно сделать, это добавить дополнительное условие с логическим И в раздел, где оно должно быть применено.
источник
Вам не нужно заявление IF вообще.
источник
where (@AdmUserId is null or CurrentOrder.CustomerAdmUserId = @AdmUserId)
Или только фильтр, если IncludeDeleted = 0:where (@IncludeDeleted = 1 or ItemObject.DeletedFlag = 0)
Нет хорошего способа сделать это в SQL. Некоторые подходы, которые я видел:
1) Используйте CASE в сочетании с логическими операторами:
2) Используйте IF вне SELECT
3) Используя длинную строку, составьте свой оператор SQL условно, а затем используйте EXEC
Третий подход отвратителен, но это почти единственная мысль, которая работает, если у вас есть несколько таких переменных условий.
источник
IF...ELSE...
условные выражения в логическиеAND
иOR
как в ответе @ njr101 выше. Недостатком этого подхода является то, что это может быть чрезвычайно сложно, если у вас их многоIF
, или если у вас много вложенныхИспользуйте оператор CASE вместо IF.
источник
Вы хотите заявление CASE
источник
Я думаю, что где ... как / = ... case ... тогда ... может работать с логическими значениями. Я использую T-SQL.
Сценарий. Допустим, вы хотите получить увлечения Person-30, если bool имеет значение false, и увлечения Person-42, если bool имеет значение true. (По некоторым данным, хобби-поиски составляют более 90% циклов бизнес-вычислений, так что платите внимательно).
источник
источник
IF P THEN Q ELSE R
<=>
( ( NOT P ) OR Q ) AND ( P OR R )
источник
В случае строки Условие будет работать правильно.
источник
В следующем примере выполняется запрос как часть логического выражения, а затем выполняются несколько другие блоки операторов в зависимости от результата логического выражения. Каждый блок операторов начинается с BEGIN и заканчивается END.
Использование вложенных операторов IF ... ELSE В следующем примере показано, как оператор IF ... ELSE может быть вложен в другой. Установите для переменной @Number значения 5, 50 и 500, чтобы проверить каждый оператор.
источник
В SQL Server у меня была та же проблема, я хотел использовать оператор and, только если параметр имеет значение false и на true мне пришлось показывать оба значения true и false, поэтому я использовал его таким образом
источник
Посмотрите, поможет ли это.
источник
источник