Maison  >  Article  >  base de données  >  Comment convertir le décodage en pg dans Oracle

Comment convertir le décodage en pg dans Oracle

下次还敢
下次还敢original
2024-05-03 00:21:53744parcourir

Pour la fonction Oracle DECODE dans PostgreSQL, vous pouvez utiliser l'expression ou l'union CASE. L'expression CASE renvoie le premier résultat correspondant en fonction de la condition. La syntaxe est la suivante : CASE WHEN condition THEN résultat ELSE résultat END. Une union combine plusieurs instructions SELECT à l'aide de l'opérateur UNION ALL, renvoyant une table contenant les colonnes de résultats qui satisfont chaque condition.

Comment convertir le décodage en pg dans Oracle

Remplacement de la fonction Oracle DECODE dans PostgreSQL

La fonction Oracle DECODE est une fonction utilisée pour renvoyer différentes valeurs basées sur un jugement conditionnel. Il n'existe pas d'équivalent exact de la fonction DECODE dans PostgreSQL, mais vous pouvez utiliser des expressions ou des unions CASE pour obtenir des fonctionnalités similaires. 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 expression

CASE La syntaxe de l'expression est la suivante :

<code>SELECT name, DECODE(gender, 'M', 'Mr.', 'Ms.') AS title
FROM people;</code>
Elle juge en fonction des conditions dans l'ordre et renvoie le premier résultat qui satisfait aux conditions. Si aucune condition n'est remplie, un résultat ELSE est renvoyé.

Join

Join est une technique qui utilise plusieurs instructions SELECT pour récupérer des données de plusieurs tables. Il peut également être utilisé pour implémenter la fonctionnalité de la fonction DECODE en combinant plusieurs instructions SELECT à l'aide de l'opérateur UNION ALL :

<code>SELECT name, 
    CASE
        WHEN gender = 'M' THEN 'Mr.'
        WHEN gender = 'F' THEN 'Ms.'
        ELSE NULL
    END AS title
FROM people;</code>
La requête ci-dessus renverra une table dans laquelle chaque ligne contient une colonne de résultat.

ExempleSupposons que nous ayons une table people avec les colonnes suivantes :
  • Gender - Genre de la personne
  • Nous souhaitons créer une requête pour obtenir le titre honorifique d'une personne en fonction du sexe : Oracle DECODE Fonction :
    <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 Expression : rrreeePostgreSQL Union : rrreeeLes trois requêtes produiront les mêmes résultats comme suit : s.
    • name - Nom de la personne
    🎜🎜

    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

    Déclaration:
    Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn