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 |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
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 ;)
>>>
>>>
>>>
>>
>
>
>
From | Date | Subject | |
---|---|---|---|
Next Message | suso | 2009-11-28 16:14:12 | Re: like no funciona |
Previous Message | Emanuel Calvo Franco | 2009-11-28 15:03:33 | Re: like no funciona |