반응형
오라클에서 if(조건, 그렇다면, 그렇지 않으면)
MySQL/MSSQL에는 아래와 같이 쿼리 내에서 null 값을 탐지하는 데 사용할 수 있는 함수인 경우 작은 인라인이 있습니다.
SELECT
...
foo.a_field AS "a_field",
SELECT if(foo.bar is null, 0, foo.bar) AS "bar",
foo.a_field AS "a_field",
...
문제는 이 코드가 Oracle 데이터베이스에서 실행되는 것이 안전하지 않다는 것입니다. 구문의 인라인을 지원하지 않기 때문입니다.
Oracle에 동등한 기능이 있습니까?
NULL 값과 COALESCE/NVL/NVL2를 주로 다루는 나머지 답변을 보완하려면 다음과 같이 하십시오.
SELECT *
FROM TheTable
WHERE field1 = CASE field2 WHEN 0 THEN 'abc' WHEN 1 THEN 'def' ELSE '' END
CASE 문은 분명 그렇게 간단하지는 않지만 유연성을 지향합니다.이는 조건이 NULL-ness를 기반으로 하지 않는 경우 특히 유용합니다.
표준 COALESCE 기능을 사용합니다.
SELECT COALESCE(foo.bar, 0) as "bar", ...
또는 Oracle 자체 NVL 기능을 사용하여 동일한 기능을 수행할 수도 있습니다.
NVL(t.column, 0)
NVL2( string1, value_if_NOT_null, value_if_null )
네, NVL이 해야 합니다.
nvl 함수를 원하는 경우: nvl(foo.bar , 0)
Oracle은 다양한 경우에도 지원합니다.
그냥 해요nvl(foo.bar,0)
할 필요가 없습니다
(select nvl(foo.bar,0)...
언급URL : https://stackoverflow.com/questions/1428402/ifcondition-then-else-in-oracle
반응형
'programing' 카테고리의 다른 글
하위 쿼리 팩터링이 있는 Oracle DELETE 문 (0) | 2023.08.14 |
---|---|
구문 오류 또는 액세스 위반: 1064, LEFT JOIN 조건의 구문 오류 (0) | 2023.08.14 |
node.js에 있는 문자열의 sha1 해시를 어떻게 얻을 수 있습니까? (0) | 2023.08.14 |
GATER_PLAN_STATISTICS가 기본 계획 통계를 생성하지 않습니다. (0) | 2023.08.14 |
PHP는 null을 0과 동일하게 간주합니다. (0) | 2023.08.14 |