| From: | Sebastián Villalba <sebastian(at)fcm(dot)unc(dot)edu(dot)ar> |
|---|---|
| To: | "Lista Ayuda Pgsql" <pgsql-es-ayuda(at)postgresql(dot)org> |
| Subject: | Hacer ILIKE '%$1%' en función |
| Date: | 2006-03-25 00:52:47 |
| Message-ID: | 20060325004105.M66194@fcm.unc.edu.ar |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-es-ayuda |
Hola a todos. Perdón si ya se respondió ésto, pero busqué y no encontré la
solución.
En una función recibo como parámetro un "varchar" que puede ser un una porción
de un apellido o un nombre que quiero identificar. La función es la siguiente:
CREATE OR REPLACE FUNCTION "selectDocenteBuscado"(varchar) RETURNS SETOF
persona AS $$
SELECT p.*
FROM persona p, "personaGrupo" pg, grupo g
WHERE g.nombre = 'Docentes'
AND g.id = pg.grupo_id
AND pg.persona_id = p.id
AND (p.apellido ILIKE '%$1%' OR p.nombre ILIKE '%$1%')
ORDER BY p.apellido
$$ LANGUAGE sql IMMUTABLE SECURITY DEFINER;
El problema es que nunca encuentra resultado (dá todos los campos de "persona"
y después dice "(0 rows)". La consulta está bien hecha, porque escribiéndola
en una consola sql con la cadena si me trae los resultados esperados, pero
mandándole esa cadena por parámetro a la función, no me devuelve nada. ¿Qué
podrá ser?, ¿puede ser que tenga que escapar de alguna forma el $1?. Intenté
con "%\$1%" y si bien no me dá error, tampoco funciona. :(
Saludos a todos y buen fin de semana.
-
-------------------------------------------
Sebastián Villalba
sebastian(at)fcm(dot)unc(dot)edu(dot)ar
-------------------------------------------
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Juan Martínez | 2006-03-25 01:21:17 | Re: Uso de Reglas |
| Previous Message | Roberto Andrade Fonseca | 2006-03-25 00:05:44 | Re: USO de BETWEEN !] |