statement - sql coalesce que es
¿Cómo COALESCE para cadenas vacías y valores NULL? (1)
Estoy intentando hacer el COALESCE () más rápido que acepta dos o más argumentos, y devuelve el primer valor no nulo Y no vacío ("").
Estoy usando esto:
CREATE OR REPLACE FUNCTION coalescenonempty(VARIADIC in_ordered_actual varchar[])
RETURNS varchar AS $$
SELECT i
FROM (SELECT unnest($1) AS i) t
WHERE i IS NOT NULL AND i <> ''''
LIMIT 1;
$$ LANGUAGE sql;
Es bastante rápido, pero aún en ninguna parte tan rápido como las declaraciones COALESCE o CASE WHEN.
¿Qué piensas?
No crees una función de usuario si quieres velocidad. En lugar de esto:
coalescenonempty(col1,col2||''blah'',col3,''none'');
hacer esto:
COALESCE(NULLIF(col1,''''),NULLIF(col2||''blah'',''''),NULLIF(col3,''''),''none'');
Es decir, para cada parámetro no constante, rodee el parámetro real con NULLIF( x ,'''')
.