Re: Ayuda de IF() de MySQL a CASE en PostgreSQL

From: Jaime Soler <jaime(dot)soler(at)gmail(dot)com>
To: Emanuel Calvo <3manuek(at)gmail(dot)com>
Cc: Juan Francisco Giménez Silva <juanfgs(at)openmailbox(dot)org>, pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Ayuda de IF() de MySQL a CASE en PostgreSQL
Date: 2017-02-20 14:33:10
Message-ID: CAKVUGgSg-4hNvyatktZZzrkZeR=Tx1jveoik1twRcRA4Of5zpQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Para migrar base de datos de mysql/oracle a postgresql te aconsejo revises
la aplicación ora2pg. En el caso de los IF dentro de pl, la solución que
implementan es:
https://github.com/darold/ora2pg/blob/master/lib/Ora2Pg/PLSQL.pm#L1634

$str =~ s/\bIF\(\s*([^,]+)\s*,\s*([^,]+)\s*,\s*([^\)]+\s*)\)/(CASE WHEN $1
THEN $2 ELSE $3 END)/igs;

Para poderte ayudar más con tu error concreto, necesaría ver cuál es la
consulta que quieres migrar y parte de la definición de las tablas/vistas
relacionadas.

El 21 de noviembre de 2016, 20:05, Emanuel Calvo <3manuek(at)gmail(dot)com>
escribió:

> Algo escribí hace un tiempo acerca de iif en postgres:
> https://wiki.postgresql.org/wiki/Simulating_iif_function.
>
> Con respecto al GROUP BY, si, tienes que ser explícito en el orden que
> quieres que se agrupen todas las columnas.
>
> El día 18 de noviembre de 2016, 11:41, Juan Francisco Giménez Silva
> <juanfgs(at)openmailbox(dot)org> escribió:
> > Hola,
> >
> > Estoy migrando los modelos de un software propietario que esta en MySQL
> > a PostgreSQL. Me he topado con un pequeño problema, en el que se esta
> > utilizando la función IF de MySQL de la siguiente manera
> > IF(condicion,resultado1,resultado2) lo cual he transcripto a
> >
> >
> > CASE
> > WHEN '' = wc."title"
> > THEN
> > TRIM( c."name" )
> > ELSE wc."title"
> > END AS title
> >
> > El problema es que me da el siguiente error:
> >
> > column "wc.title" must appear in the GROUP BY clause or be used in an
> > aggregate function
> >
> > Si añado esa columna a GROUP BY me empieza a pedir sucesivamente que
> > añada wc.content y otras columnas de la tabla, por lo cual deduzco que
> > me debo estar equivocando en algo más.
> >
> > Agradecería si me pueden ayudar un poco con esto.
> >
> >
> > Saludos!!
> >
> > -
> > Enviado a la lista de correo pgsql-es-ayuda (
> pgsql-es-ayuda(at)postgresql(dot)org)
> > Para cambiar tu suscripción:
> > http://www.postgresql.org/mailpref/pgsql-es-ayuda
>
>
>
> --
> --
> Emanuel Calvo
> Sr. Technical Services at Percona
> Team Building at Ayres.io
>
> -
> Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)org
> )
> Para cambiar tu suscripción:
> http://www.postgresql.org/mailpref/pgsql-es-ayuda
>

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Carlos Enrique Perez 2017-02-20 14:47:25 Re: Ayuda de IF() de MySQL a CASE en PostgreSQL
Previous Message Jaime Soler 2017-02-20 14:18:43 Re: Consulta de Replicacion