2013-03-07 26 views
10

Nie istnieje odpowiednik dekodowania Oracle Funkcja W PostgreSQL. Czy jest ktoś, kto napisał dekodowanie jako funkcja?Równoważnik dekodowania w postgresie

+3

Możesz mieć więcej szczęścia, jeśli opisałeś, co robi ta funkcja. Ponieważ każdy, kto zna PostgreSa, ale nie Oracle, nie będzie w stanie udzielić odpowiedzi bez uprzedniego zbadania tego. – qqx

+0

Nie ma krótkich wyrażeń takich, jak "dekodowanie", ale można użyć standardowej instrukcji SQL 'CASE'. –

Odpowiedz

10

Istnieje odpowiednik. To się nazywa instrukcja CASE.

Istnieją dwa rodzaje postępowania:

prosty przypadek:

CASE search-expression 
    WHEN expression [, expression [ ... ]] THEN 
     statements 
    [ WHEN expression [, expression [ ... ]] THEN 
     statements 
    ... ] 
    [ ELSE 
     statements ] 
END CASE; 

Szukano CASE:

CASE 
    WHEN boolean-expression THEN 
     statements 
    [ WHEN boolean-expression THEN 
     statements 
    ... ] 
    [ ELSE 
     statements ] 
END CASE; 

CASE stwierdzenia są łatwiejsze do odczytania; Wolę te ponad decode() w Oracle.

+1

Ja też wolę 'CASE' ponad' decode() ' –

2

Jeśli jesteś przyzwyczajony do określonych funkcji Oracle, możesz chcieć zainstalować rozszerzenie PostgreSQL orafce.

Oprócz innych funkcji Oracle, orafce implementuje także DECODE - tę, której szukasz.

Jeśli używasz Ubuntu, po prostu musisz zainstalować pakiet postgresql-9.1-orafce, aby orafce był dostępny na serwerze PostgreSQL.

+0

w Windows, jak mogę zainstalować ten? – vmb

+0

Powinno być możliwe - nigdy nie próbowałem. OK, próbowałem PostgreSQL na Windows, ale działało to o wiele wolniej w porównaniu do Linuksa, że ​​nigdy nie oglądałem się za siebie. Jeśli zależy Ci na wydajności, naprawdę NIE powinieneś uruchamiać PostgreSQL na Windowsie - spójrz na [odpowiedź jednego z twórców PostgreSQL] (http://serverfault.com/questions/222430/is-postgresql-suited-to-one-os -jest-lepszy-na-linux-niż-windows). – mvp

+0

jak zainstalować na windows..can u pls udostępnij link do pobrania – vmb