Re: SELECT a partir de un BITMAP

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

In response to

Browse pgsql-es-ayuda by date

  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