Czy możliwe jest użycie klauzuli IF w klauzuli WHERE w MS SQL?
Przykład:
WHERE
IF IsNumeric(@OrderNumber) = 1
OrderNumber = @OrderNumber
ELSE
OrderNumber LIKE '%' + @OrderNumber + '%'
sql
sql-server
tsql
Bryan Roth
źródło
źródło
CASE
jest właściwym rozwiązaniem w większości przypadków. W moim przypadku chciałem zmienić operator porównania i dlatego zastosowałem następne podejście.Powinieneś być w stanie to zrobić bez IF ani CASE
W zależności od smaku SQL może być konieczne dostosowanie rzutowań numeru zamówienia do INT lub VARCHAR w zależności od tego, czy obsługiwane są rzutowania niejawne.
Jest to bardzo popularna technika w klauzuli WHERE. Jeśli chcesz zastosować logikę „JEŻELI” w klauzuli WHERE, wszystko, co musisz zrobić, to dodać dodatkowy warunek z logiczną wartością logiczną ORAZ do sekcji, w której należy go zastosować.
źródło
W ogóle nie potrzebujesz instrukcji IF.
źródło
where (@AdmUserId is null or CurrentOrder.CustomerAdmUserId = @AdmUserId)
Lub filtruj tylko, jeśli IncludeDeleted = 0:where (@IncludeDeleted = 1 or ItemObject.DeletedFlag = 0)
Nie ma dobrego sposobu na zrobienie tego w SQL. Niektóre podejścia, które widziałem:
1) Użyj CASE w połączeniu z operatorami logicznymi:
2) Użyj JEŻELI poza WYBOREM
3) Używając długiego łańcucha, ułóż warunkowo instrukcję SQL, a następnie użyj EXEC
Trzecie podejście jest ohydne, ale jest to prawie jedyna myśl, która działa, jeśli masz wiele takich zmiennych warunków.
źródło
IF...ELSE...
warunkowych w logiczneAND
i logiczne ,OR
jak w powyższej odpowiedzi @ njr101. Wadą tego podejścia jest to, że może być niezwykle trudne, jeśli masz wieleIF
lub wiele z nich jest zagnieżdżonychUżyj instrukcji CASE zamiast IF.
źródło
Chcesz instrukcji CASE
źródło
Myślę, że gdzie ... jak / = ... przypadek ... to ... może współpracować z Booleanami. Używam T-SQL.
Scenariusz: Powiedzmy, że chcesz zdobyć hobby Osoby-30, jeśli bool jest fałszywy, i hobby Osoby-42, jeśli bool jest prawdziwy. (Według niektórych wyszukiwanie hobbystyczne obejmuje ponad 90% cykli obliczeniowych w biznesie, więc zwróć uwagę.)
źródło
źródło
IF P THEN Q ELSE R
<=>
( ( NOT P ) OR Q ) AND ( P OR R )
źródło
W przypadku linii Warunek będzie działał poprawnie.
źródło
Poniższy przykład wykonuje kwerendę jako część wyrażenia logicznego, a następnie wykonuje nieco inne bloki instrukcji w zależności od wyniku wyrażenia logicznego. Każdy blok instrukcji zaczyna się od BEGIN i kończy się END.
Korzystanie z zagnieżdżonych instrukcji IF ... ELSE Poniższy przykład pokazuje, w jaki sposób można zagnieździć instrukcję IF… ELSE wewnątrz innej instrukcji. Ustaw zmienną @Number na 5, 50 i 500, aby przetestować każdą instrukcję.
źródło
Na serwerze sql miałem ten sam problem. Chciałem użyć instrukcji i tylko wtedy, gdy parametr ma wartość false, a na true musiałem pokazywać obie wartości true i false, więc użyłem go w ten sposób
źródło
Sprawdź, czy to pomoże.
źródło
źródło