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: | Raw Message | Whole Thread | 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 !] |