sql >> Databáze >  >> RDS >> Oracle

Porovnat řetězec v Oracle Case When

Kontrolujete řetězce proti prázdnému řetězci, takže máte problémy; v Oracle raději zkontrolujte, zda váš řetězec is not null :

SELECT CASE WHEN '7C54D3E133830A78E040A8C010014B7D' is not null
            THEN '7C54D3E133830A78E040A8C010014B7D'
            WHEN 'e84a4433966c4b8996ce34905acff63d' is not null
            THEN 'e84a4433966c4b8996ce34905acff63d'
            WHEN '7faa9126b1c6412fa58375ab2b2be1db' is not null
            THEN '7faa9126b1c6412fa58375ab2b2be1db'
            ELSE NULL
 END
 FROM DUAL 

O tom, jak Oracle zachází s prázdným řetězcem a hodnotou null, zde najdete něco víc

Příklad:

select q'['' = '']'         , case when '' = ''            then 'YES' else 'NO' end from dual union all
select q'['' is null]'      , case when '' is null         then 'YES' else 'NO' end from dual union all 
select q'['' = null ]'      , case when '' = null          then 'YES' else 'NO' end from dual union all 
select q'[null = null]'     , case when null = null        then 'YES' else 'NO' end from dual union all 
select q'[null is null]'    , case when null is null       then 'YES' else 'NO' end from dual union all 
select q'['' != '']'        , case when '' != ''           then 'YES' else 'NO' end from dual union all
select q'['' is not null]'  , case when '' is not null     then 'YES' else 'NO' end from dual union all
select q'['' != null ]'     , case when '' != null         then 'YES' else 'NO' end from dual union all
select q'[null != null]'    , case when null != null       then 'YES' else 'NO' end from dual union all
select q'[null is not null]', case when null is not null   then 'YES' else 'NO' end from dual

dává:

'' = ''           NO
'' is null        YES
'' = null         NO
null = null       NO
null is null      YES
'' != ''          NO
'' is not null    NO
'' != null        NO
null != null      NO
null is not null  NO

Jedním slovem, jediná kontrola, na kterou se můžete spolehnout, když mluvíte o NULL , je:IS [NOT] NULL



  1. Konfigurace Puma Cluster na Heroku

  2. Jak provedu hromadnou aktualizaci v mySQL pomocí node.js

  3. Vytvoření CTE v Oracle

  4. Proč spojovací dotaz obsahující funkci součtu vrací pouze 1 řádek