From: | Alberto Cabello Sánchez <alberto(at)unex(dot)es> |
---|---|
To: | Ruben Fitó <r(dot)fito(at)ubiquat(dot)com> |
Cc: | "pgsql-es-ayuda(at)postgresql(dot)org" <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: SELECT a partir de un BITMAP |
Date: | 2014-02-17 17:42:16 |
Message-ID: | 20140217184216.8128e3217ab7184318d884a2@unex.es |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
On Mon, 17 Feb 2014 16:05:18 +0100
Ruben Fitó <r(dot)fito(at)ubiquat(dot)com> wrote:
> Hola Jaime,
>
> concretamente necesito que a partir de un bitmap por ejemplo '101110..n',
> este bitmap se traduce a :
>
> 1 --> Codigo_producto_externo = 1 NO autorizado
> 0 --> Codigo_producto_externo = 2 autorizado
> 1 --> Codigo_producto_externo = 3 NO autorizado
> 1 --> Codigo_producto_externo = 4 NO autorizado
> 1 --> Codigo_producto_externo = 4 NO autorizado
> 0 --> Codigo_producto_externo = 5 autorizado
> .
> .
> n--> Codigo_producto_externo = posicion de n
Mira a ver si una consulta parecida a
SELECT * FROM productos WHERE
substring('011010' FROM (char_length('011010') - prod_id) FOR 1) = '1';
puede servirte.
El cálculo
substring('011010' FROM (char_length('011010') - prod_id) FOR 1)
se debe a que quieres recorrer la cadena de derecha a izquierda, de lo
contrario usarías simplemente
substring('011010' FROM prod_id FOR 1)
para obtener el prod_id-ésimo valor de la cadena (empezando por la izquierda).
He supuesto que los prod_id empiezan en 1.
--
Alberto Cabello Sánchez <alberto(at)unex(dot)es>
-
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
From | Date | Subject | |
---|---|---|---|
Next Message | Ruben Fitó | 2014-02-18 12:09:04 | Re: SELECT a partir de un BITMAP |
Previous Message | Jaime Casanova | 2014-02-17 16:33:43 | Re: SELECT a partir de un BITMAP |