El día 28 de noviembre de 2009 11:50, suso <jlcu...@terra.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 <jlcu...@terra.es> escribió: >>> >>> Hola Emanuel >>>> >>>> 2009/11/27 suso <jlcu...@terra.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 ;) >> >> >> > > -- Emanuel Calvo Franco DBA at: www.siu.edu.ar www.emanuelcalvofranco.com.ar -- TIP 2: puedes desuscribirte de todas las listas simult�neamente (env�a "unregister TuDirecci�nDeCorreo" a majord...@postgresql.org)