>데이터 베이스 >Oracle >Oracle에서 디코드를 PG로 변환하는 방법

Oracle에서 디코드를 PG로 변환하는 방법

下次还敢
下次还敢원래의
2024-05-03 00:21:53827검색

PostgreSQL의 Oracle DECODE 함수의 경우 CASE 표현식 또는 공용체를 사용할 수 있습니다. CASE 표현식은 조건에 따라 일치하는 첫 번째 결과를 반환합니다. 구문은 CASE WHEN 조건 THEN 결과 ELSE 결과 END입니다. Union은 UNION ALL 연산자를 사용하여 여러 SELECT 문을 결합하고 각 조건을 충족하는 결과 열이 포함된 테이블을 반환합니다.

Oracle에서 디코드를 PG로 변환하는 방법

PostgreSQL의 Oracle DECODE 함수 대체

Oracle DECODE 함수는 조건부 판단에 따라 다른 값을 반환하는 데 사용되는 함수입니다. PostgreSQL에는 DECODE 함수와 완전히 동일한 기능이 없지만 CASE 표현식이나 공용체를 사용하여 비슷한 기능을 얻을 수 있습니다. CASE 表达式或联合来实现类似的功能。

CASE 表达式

CASE 表达式的语法如下:

<code>CASE
    WHEN условие1 THEN результат1
    WHEN условие2 THEN результат2
    ...
    ELSE результат ELSE
END</code>

它根据条件依次进行判断,并返回与第一个满足条件的结果。如果没有任何条件满足,则返回 ELSE 结果。

联合

联合是一种使用多个 SELECT 语句从多个表中检索数据的技术。它也可以用于实现 DECODE 函数的功能,方法是使用 UNION ALL 操作符组合多个 SELECT 语句:

<code>SELECT CASE WHEN условие1 THEN résultat1 ELSE NULL END AS результат_1
UNION ALL
SELECT CASE WHEN условие2 THEN résultat2 ELSE NULL END AS результат_2
...</code>

上述查询将返回一个表,其中每行都包含一个满足条件的结果列。

示例

假设我们有一个表 people,其中包含以下列:

  • name - 人员姓名
  • gender
CASE 표현식

CASE 표현식의 구문은 다음과 같습니다.

<code>SELECT name, DECODE(gender, 'M', 'Mr.', 'Ms.') AS title
FROM people;</code>
순차적으로 조건을 기준으로 판단하여 조건을 만족하는 첫 번째 결과를 반환합니다. 조건이 충족되지 않으면 ELSE 결과가 반환됩니다.

Join

Join은 여러 SELECT 문을 사용하여 여러 테이블에서 데이터를 검색하는 기술입니다. 또한 UNION ALL 연산자를 사용하여 여러 SELECT 문을 결합하여 DECODE 함수의 기능을 구현하는 데 사용할 수도 있습니다.

<code>SELECT name, 
    CASE
        WHEN gender = 'M' THEN 'Mr.'
        WHEN gender = 'F' THEN 'Ms.'
        ELSE NULL
    END AS title
FROM people;</code>
위 쿼리는 각 행에 결과 열이 포함된 테이블을 반환합니다.

예다음 열이 포함된 people 테이블이 있다고 가정합니다.
  • 성별 - 사람의 성별
  • 성별을 기준으로 사람의 경칭을 가져오는 쿼리를 만들고 싶습니다. Oracle DECODE 함수:
    <code>SELECT name, 
        CASE WHEN gender = 'M' THEN 'Mr.' ELSE NULL END AS title
    UNION ALL
    SELECT name, 
        CASE WHEN gender = 'F' THEN 'Ms.' ELSE NULL END AS title
    FROM people;</code>
    PostgreSQL CASE 표현식: rrreeePostgreSQL Union: rrreee세 가지 쿼리 모두 다음과 같은 결과를 생성합니다.
    • name - 사람 이름
    🎜🎜

    위 내용은 Oracle에서 디코드를 PG로 변환하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    성명:
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.