2012/5/19 Matheus de Oliveira <matioli.math...@gmail.com>

> Essa função em si não parece ser uma boa prática, mas dá pra usar
> expressão regular pra "tentar" fazer o que você quer.
>
> Exemplo:
>
> CREATE OR REPLACE FUNCTION CALCULE (calculo text)
> RETURNS NUMERIC AS $$
> DECLARE
>     v_result numeric;
> BEGIN
>     EXECUTE 'SELECT ' || regexp_replace(calculo, '([0-9]+)',
> '\1::numeric', 'g')
>     INTO v_result;
>     RETURN v_result;
> END;
> $$ LANGUAGE plpgsql;
>
>
> Aviso: código não testado...
>
>
Corrigindo pra aceitar valor decimal:

CREATE OR REPLACE FUNCTION CALCULE (calculo text)
RETURNS NUMERIC AS $$
DECLARE
    v_result numeric;
BEGIN
    EXECUTE 'SELECT ' || regexp_replace(calculo, '([0-9]+)([^\.0-9])',
'\1::numeric\2', 'g')
    INTO v_result;
    RETURN v_result;
END;
$$ LANGUAGE plpgsql;
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Reply via email to