Buenas. Lo mas simple para esto es usar un OR -- SELECT * FROM PRD_REG WJERE (ID_TIP_REG = param OR param = 0)
Saludos. El 22 de junio de 2016, 9:31, Alvaro Herrera <alvhe...@2ndquadrant.com> escribió: > Herman Estaban escribió: > > > Tengo una tabla PRD_REG con 02 campos: > > > > ID_TIP_REG INTEGER > > NOM_TIP_REG VARCHAR(25) > > > > Esta tabla tiene 14 registros y esta registrado asi: > > > > ID_TIP_REG | NOM_TIP_REG > > 1 | DETALLADO > > 2 | MARCADO > > 3 | PROGRAMADO > > 4 | CON DISEÑO > > 5 | SIN DISEÑO > > . > > . > > . > > 99 | SIN REGISTRAR > > > > He creado un funcion, que tiene un parametro (param) de tipo INTEGER, en > > esta funcion la que esta tabla PRD_REG se cruza con JOIN con otra tabla y > > en el WHERE quiero usar un LIKE ya que el usuario puede elegir cualquiera > > de los codigos de la tabla PRD_REG, como tambien todos por eso necesito > el > > LIKE. > > > > Por eso utilizo esto: > > WHERE CAST(ID_TIP_REG AS CHAR) LIKE param; > > Suena a mal diseño de la función. > > consulta := 'select bla bla from prd_reg ' > if param IS NOT NULL then > consulta := consulta || 'where id_tip_reg = ' || param > end if; > execute consulta; > > Así, si le pasas un NULL a param significa "todos", pero si es un valor > específico entonces trae los registros de ese código. > > Alternativamente, si quieres varios códigos, podrías usar = ANY, > select .. from prd_reg where id_tip_reg = any (1, 4, 6) > > -- > Álvaro Herrera http://www.2ndQuadrant.com/ > PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services > > - > Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org > ) > Para cambiar tu suscripción: > http://www.postgresql.org/mailpref/pgsql-es-ayuda > -- *Ing. Eduardo Reyes* Analista Programador. (809) 607-1961 ere...@h-rivera.com