Für die Oracle DECODE-Funktion in PostgreSQL können Sie den CASE-Ausdruck oder die Union verwenden. Der CASE-Ausdruck gibt das erste übereinstimmende Ergebnis basierend auf der Bedingung zurück. Die Syntax lautet: CASE WHEN Bedingung DANN Ergebnis ELSE Ergebnis ENDE. Eine Union kombiniert mehrere SELECT-Anweisungen mithilfe des UNION ALL-Operators und gibt eine Tabelle zurück, die die Ergebnisspalten enthält, die jede Bedingung erfüllen.
Ersatz der Oracle DECODE-Funktion in PostgreSQL
Die Oracle DECODE-Funktion ist eine Funktion, die verwendet wird, um unterschiedliche Werte basierend auf einer bedingten Beurteilung zurückzugeben. Es gibt kein genaues Äquivalent der DECODE-Funktion in PostgreSQL, Sie können jedoch CASE
-Ausdrücke oder Unions verwenden, um eine ähnliche Funktionalität zu erreichen. 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
Die Syntax des Ausdrucks lautet wie folgt: <code>SELECT name, DECODE(gender, 'M', 'Mr.', 'Ms.') AS title
FROM people;</code>
Es beurteilt basierend auf den Bedingungen der Reihe nach und gibt das erste Ergebnis zurück, das die Bedingungen erfüllt. Wenn keine Bedingungen erfüllt sind, wird ein ELSE
-Ergebnis zurückgegeben.
Join
Join ist eine Technik, die mehrere SELECT-Anweisungen verwendet, um Daten aus mehreren Tabellen abzurufen. Es kann auch verwendet werden, um die Funktionalität der DECODE-Funktion zu implementieren, indem mehrere SELECT-Anweisungen mit dem Operator UNION ALL
kombiniert werden: <code>SELECT name,
CASE
WHEN gender = 'M' THEN 'Mr.'
WHEN gender = 'F' THEN 'Ms.'
ELSE NULL
END AS title
FROM people;</code>
Die obige Abfrage gibt eine Tabelle zurück, in der jede Zeile eine Ergebnisspalte enthält.
|
|
---|---|
PostgreSQL CASE Ausdruck: | |
PostgreSQL Union: | rrreee |
Das obige ist der detaillierte Inhalt vonSo konvertieren Sie Decode in Oracle in PG. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!