Em 16 de janeiro de 2018 15:00, Edelson Regis de Lima
<[email protected]> escreveu:
> Então, essa seria a solução ideal, o problema é que a versão do banco é 9.1,
> e essas funções estão disponíveis a partir da 9.3.
> E no momento não tenho como atualizar o BD...
>
A versão 9.1 foi descontinuada a mais de 1 ano. Isso significa que não
há versões corretivas para a mesma. Planeje o quanto antes a migração
para uma versão recente (a última é a versão 10).

> Será que teria uma outra maneira?
>
Basta criar uma função.

euler=# \! cat /tmp/a.sql
CREATE OR REPLACE FUNCTION array_remove(a date[], b date) RETURNS date[] AS
$$
DECLARE
    r date[];
    x date;
BEGIN
    FOREACH x IN ARRAY a
    LOOP
        IF x <> b THEN
            r := array_append(r, x);
        END IF;
    END LOOP;

    RETURN r;
END;
$$ LANGUAGE plpgsql;
euler=# \i /tmp/a.sql
CREATE FUNCTION
euler=# create table foo (a date[]);
CREATE TABLE
euler=# insert into foo values('{''2018-01-01'', ''2018-01-02'',
''2018-01-10''}');
INSERT 0 1
euler=# select a from foo;
                 a
------------------------------------
 {2018-01-01,2018-01-02,2018-01-10}
(1 row)

euler=# select array_remove(a, '2018-01-01') from foo;
      array_remove
-------------------------
 {2018-01-02,2018-01-10}
(1 row)


-- 
   Euler Taveira                                   Timbira -
http://www.timbira.com.br/
   PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a