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