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 <[email protected]> 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 <[email protected]> escribió:
Hola Emanuel
2009/11/27 suso <[email protected]>:
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 ;)
--
TIP 2: puedes desuscribirte de todas las listas simult�neamente
(env�a "unregister TuDirecci�nDeCorreo" a [email protected])