How to use case statement in where condition in oracle sql?

oracle case statement in where clause with parameter
nested case statement in oracle where clause with examples
case when exists in where clause oracle
case statement in oracle with multiple conditions examples
multiple case statement in oracle examples
if condition in where clause in oracle
oracle sql case when null
dynamic where clause in oracle sql
SELECT DY,ME,NONME 
FROM ( 
    SELECT LEVEL, TO_CHAR(SYSDATE+ROWNUM,'DAY') DY , 0 ME, 2 NONME
    FROM DUAL
    CONNECT BY LEVEL <=10
) 
WHERE ?

If the condition is (ME < NONME) then not in ('SATURDAY','SUNDAY')

when (ME> NONME) then not in ('FRIDAY', 'SATURDAY')

How to use?

(
  (ME<NONME and .... not in (...)) OR
  (ME>NONME and .... not in (...))
)

Case construct with WHERE clause, I'm getting error-- PL/SQL: ORA-00905: missing keyword when i compile You need do to the comparison outside the whole case statement. According to MS SQL Docs, a CASE statement can be used throughout the SELECT statement. CASE can be used in any statement or clause that allows a valid expression. For example, you can use CASE in statements such as SELECT, UPDATE, DELETE and SET, and in clauses such as select_list, IN, WHERE, ORDER BY, and HAVING.

Suppose your test data is as follows:

select * from tab;

M N DY      
- - --------
A B FRIDAY  
A B SATURDAY
A B SUNDAY  
B A FRIDAY  
B A SATURDAY
B A SUNDAY  

You need to evaluate implication A --> B which can be rewritten as NOT A OR B

Using this rule your query is

select * from tab
where 
-- (ME < NONME) --> not in ('SATURDAY','SUNDAY')
(not (ME < NONME) or DY not in ('SATURDAY','SUNDAY'))  AND
-- (ME> NONME) -->  not in ('FRIDAY', 'SATURDAY')
(not (ME > NONME) or DY not in ('FRIDAY', 'SATURDAY'))
;

giving

M N DY      
- - --------
A B FRIDAY  
B A SUNDAY  

Ask TOM "How to use case statement inside where clause ?", This Oracle tutorial explains how to use the Oracle / PLSQL CASE statement with Starting in Oracle 9i, you can use the CASE statement within a SQL statement. If no condition is found to be true, then the CASE statement will return the� The syntax of the SQL CASE expression is: CASE [expression] WHEN condition_1 THEN result_1 WHEN condition_2 THEN result_2 WHEN condition_n THEN result_n ELSE result END case_name. The CASE statement can be written in a few ways, so let’s take a look at these parameters.

You can use a query containing case-insensitive NOT regexp_like() with parenthesed AND operators and an OR operator combining those expressions :

WITH T AS
(
  SELECT LEVEL, TO_CHAR(SYSDATE + LEVEL, 'DY','NLS_DATE_LANGUAGE=ENGLISH') DY, 0 ME, 2 NONME
    FROM DUAL
  CONNECT BY LEVEL <= 10
)
SELECT *
  FROM T
 WHERE ( NOT regexp_like(dy,'sat|sun','i') AND ME < NONME ) 
    OR ( NOT regexp_like(dy,'sat|fri','i') AND ME > NONME )

Demo

Oracle / PLSQL: CASE Statement, You can write the where clause as: where (case when (:stateCode = '') then (1) when (:stateCode != '') and (vw.state_cd in (:stateCode)) then 1� The SQL CASE Statement. The CASE statement goes through conditions and returns a value when the first condition is met (like an IF-THEN-ELSE statement). So, once a condition is true, it will stop reading and return the result. If no conditions are true, it returns the value in the ELSE clause. If there is no ELSE part and no conditions are true, it returns NULL.

If your are keen to use case..when statement then it should be done as following:

.....
Where case 
      when ME < NONME and dy not in ('SATURDAY','SUNDAY')
      then 1 
      When ME > NONME and DY not in ('FRIDAY', 'SATURDAY') 
      then 1
      end = 1

Cheers!!

Conditional WHERE clause with CASE statement in Oracle, CASE can be used in any statement or clause that allows a valid expression. For example, you can use CASE in statements such as SELECT, UPDATE,� You can write the where clause as: where (case when (:stateCode = '') then (1) when (:stateCode != '') and (vw.state_cd in (:stateCode)) then 1 else 0) end) = 1; Alternatively, remove the case entirely: where (:stateCode = '') or ( (:stateCode != '') and vw.state_cd in (:stateCode)); Or, even better:

Can I have a CASE Statement in the WHERE Clause?, You'll get them for Oracle, SQL Server, MySQL, and PostgreSQL. Print them or use them as an easy reference. The case statement in SQL returns a value on a specified condition. We can use a Case statement in select queries along with Where, Order By and Group By clause. It can be used in Insert statement as well. In this article, we would explore CASE statement and its various use cases.

SQL CASE Statement Explained with Examples, Upon the logic using your data according to sql where parameter padding feature increases the case. Clarify the case to be a view that oracle case statement� The CASE statement can be used in Oracle/PLSQL. You could use the CASE statement in a SQL statement as follows: (includes the expression clause) SELECT table_name, CASE owner WHEN 'SYS' THEN 'The owner is SYS' WHEN 'SYSTEM' THEN 'The owner is SYSTEM' ELSE 'The owner is another value' END FROM all_tables;

Oracle Case Statement In Where Clause With Parameter, Receive notifications when clause oracle sql case, llc and using explicit cursor? Price bookmarking for the case expression and case when in oracle example, � In a nutshell, the condition is whether Case_Expression = Value_N and ACTION is the execution of Statement_N if the above result is TRUE. ALIAS_NAME is optional and is the alias name given to CASE statement result. Mostly used when we use CASE in the select clause. Rules for Simple Case:

Comments
  • It's generally better to use AND/OR constructions instead of case expressions in the WHERE clause.
  • By the way, it's better to use abbreviated names (if only to avoid the need for trimming whitespace) and specify a language, e.g. to_char(sysdate+rownum, 'DY', 'nls_date_language=English')
  • While this code may answer the question, providing additional context regarding why and/or how this code answers the question improves its long-term value.