Buenas, quería comentaros un problema con el que me estoy encontrando y que (pese a que probablemente sea una tontería) me está llevando de craneo:
Tengo una función con la que pretendo comprobar que el primer carácter de un campo textual sea 'F'. La función tiene este código:
Código:
BEGIN
EXECUTE 'select substring(s1.'|| $2||'::text from '|| $4||' for '|| $5||') from '|| $1||' as s1
where s1.gid='|| $3||' and substring(s1.'|| $2||'::text from '|| $4||' for '|| $5||')='''|| $6||'''::text;';
IF FOUND THEN
RETURN true;
ELSE
RETURN false;
END IF;
END;
Y la llamada la realizo tal que así: select devuelve_booleano('x2bis','txt', '5', '1','1','F')
La explicación de los parámetros:
/*Comprueba en el registro $3 del campo textual $2 de la tabla $1*/
/*si los $5 siguientes carácteres a la posición $4*/
/*coincide con el valor $6*/
--------------------------------------------------------------------------------------------------------------------------------------------------------------
Para el caso particular de esta query: select substring(s1.txt::text from 1 for 1) from x2bis as s1 where s1.gid=5 el resultado es 'F'
Pero la función me está devolviendo 'false' en todo momento independientemente del carácter que tenga que buscar en el parámetro 6º
¿Alguien sabe que puedo estar haciendo mal?
Gracias por la ayuda.