IF-ELSE-THEN: SELECT field1, field2, CASE WHEN field1 > 0 THEN field2/field1 ELSE 0 END AS field3 FROM test; field1 > 0 ? (field2 / field1 ) : 0 --> SQL IF arg = 'a' THEN --> plpgsql PL/SQL RETURN 1; ELSEIF a = 'b' THEN RETURN 5; ELSE RETURN 2; END IF; COALESCE Like (OR ...) IN Lisp COALESCE(a, b, c ...): (or a b c ...) -- Lisp, BUT must be same time a || b || c -- JavaScript NULLIF => NULLIF(a, b): a == b ? null : a SELECT COALESCE(NULLIF(y, ''),x), COALESCE(NULLIF(x,''),y),... CREATE OR replace FUNCTION getf(arg character varying(255)) RETURNS int as $$ BEGIN if arg = 'a' THEN RETURN 1; else RETURN 2; END if; END; $$ LANGUAGE plpgsql -- <= Note CREATE OR REPLACE FUNCTION if_else(boolean, anyelement, anyelement) RETURNS anyelement LANGUAGE SQL AS $func$ SELECT CASE WHEN $1 THEN $2 ELSE $3 END $func$;