Skip site navigation (1) Skip section navigation (2)

Re: like no funciona

From: suso <jlcubas(at)terra(dot)es>
To:
Cc: PostgreSQL <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: like no funciona
Date: 2009-11-28 15:57:20
Message-ID: 4B114860.6000308@terra.es (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
Me sigue dando 0 registros, el like no reconoce o no hace la comparación correctamente, ya que 
si pongo(a efectos de prueba)
LIKE 'P&'      puede ser P, o L o la letra que sea
esto funciona perfectamente
si hago la asignación a través del parámetro de la function, ahí es donde falla
Como pudiste ver, los nombres están todos en mayúsculas (auqneu también uso he usado ilike), etc.

> El día 28 de noviembre de 2009 11:50, suso <jlcubas(at)terra(dot)es> escribió:
>> Este es el campo por el cual hace la busqueda, no debe devoler registros
>> como tal, sino la cantidad de registros que empiecen por la letra "x", es
>> letra es la que le paso a la function desde mi programa, es decir:
>>
>> select cont_reg( '" & cadena_que_le_paso & "')
>>
>> cadena_que_le_paso procede de un textbox, que normalmente será la inicial
>> del campo apellido, puede ser 'P', puede ser 'S', etc, si hay mas de 500
>> registros, empezaría por esa letra+ una segunda letra, o sea, 'PE' ó 'PI', o
>> la combinación que sea.
>>
>> estos son los datos en los que debe mirar, en el campo apell
>> "PIPOS"
>> "UNO"
>> "LOPEZ"
>> "POPO"
>> "UNO"
>> "PEPET"
>> "AFONSO"
>> "JOSEFA"
>> "SANCHA"
>> "ESTEVEZ"
>> "BUCK"
>> "BELLON"
>> "GARCIA"
>>
> 
> probá
> 
> LIKE $e$'$e$ || apelli || $e$'%$e$;
>>> El día 28 de noviembre de 2009 11:28, suso <jlcubas(at)terra(dot)es> escribió:
>>>> Hola Emanuel
>>>>> 2009/11/27 suso <jlcubas(at)terra(dot)es>:
>>>>>> Hola de nuevo, por favor, a ver si alguien me puede decir pq no
>>>>>> funciona
>>>>>> ésta consulta, incluso si la ejecuto dede pgadmin, postgres 8.4 y
>>>>>> windows
>>>>>> xp.
>>>>>>
>>>>>> select count(*) into devuel from clientes where apell like '" || apelli
>>>>>> ||
>>>>>> "%'
>>>>>>
>>>>>> select count(*) into devuel from clientes where apell like 'P%'
>>>>>>
>>>>>> Esto si funciona, si hago su "equivalente" desde vb6 va sin problemas.
>>>>>> Otros colisteros me han dicho variantes, pero ninguna va.
>>>>>> por ejemplo:
>>>>>>
>>>>>> select count(*) into devuel from clientes where apell like '" & apelli
>>>>>> &
>>>>>> "%'
>>>>>> select count(*) into devuel from clientes where apell like ' & apelli &
>>>>>> %'
>>>>>> select count(*) into devuel from clientes where apell like ' apelli &
>>>>>> %'
>>>>>> Este tipo de cosas
>>>>>>
>>>>> Si apelli es una columna, hay algo mal en la composición de la
>>>>> expresión.
>>>> apelli es una valor que le paso a la function, voy a poner el código
>>>> completo
>>>>
>>>> CREATE OR REPLACE FUNCTION cont_reg(apelli character varying)
>>>>  RETURNS integer AS
>>>> $BODY$
>>>>
>>>> DECLARE
>>>>  devuel integer;
>>>> BEGIN
>>>>  if apelli is not null THEN
>>>> select count(*) into devuel from pacientes where apell like '" || apelli
>>>> ||
>>>> "%';
>>> la cadena contiene ' ?
>>>
>>>
>>>
>>>> end if;
>>>>
>>>>       if found then
>>>>               return devuel;
>>>>       else
>>>>               return 0;
>>>>       end if;
>>>> END;
>>>>
>>>> $BODY$
>>>>  LANGUAGE 'plpgsql' VOLATILE
>>>>  COST 100;
>>>> ALTER FUNCTION cont_reg(character varying) OWNER TO postgres;
>>>>> Podrías mostar el registro que supuestamente te debería devolver?
>>> Aún esperamos el registro ;)
>>>
>>>
>>>
>>
> 
> 
> 


In response to

Responses

pgsql-es-ayuda by date

Next:From: susoDate: 2009-11-28 16:14:12
Subject: Re: like no funciona
Previous:From: Emanuel Calvo FrancoDate: 2009-11-28 15:03:33
Subject: Re: like no funciona

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group