Hola Fernando una vez tuve la necesidad de hacer una función para contar
subcadenas dentro de cadenas y creo que te puede servir.
CREATE OR REPLACE FUNCTION contarsubcadena(cadena text, subcadena text)
RETURNS integer AS
$BODY$declare
cad text;
sub text;
contador integer;
begin
cad:=$1;
sub:=$2;
contador:=0;
loop
if position(sub in cad)<>0 then
contador:=contador+1;
cad:=substring(cad from position(sub in cad)+1 for length (cad));
else
exit;
end if;
end loop;
return contador;
end;$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ejemplo de uso
select contarsubcadena('cadena de ejemplo', ' ')
2
también la puedes usar con otras subcadenas, como por ejemplo ',' , ';', etc
saludos
El 19/06/2013 0:42, Luis Fernando Ortiz Vera escribió:
Apreciada Lista de ayuda, intento desarrollar una funcion en
postgresql, que me retornes un entero con los espacios contenidos en
la cadena que envio como argumento. Al hacerlo me aparece el siguiente
error. pgsql-es-ayuda@postgresql.org
<mailto:pgsql-es-ayuda@postgresql.org>
El codigo del la funcion que he escrito es el siguiente:
CREATE OR REPLACE FUNCTION "public"."contarblanco" (cadena varchar)
RETURNS integer AS
$body$
DECLARE
resdo INTEGER;
BEGIN
resdo := 0;
WHILE strpos( cadena, ' ') > 0 LOOP
resdo := resdo + 1;
select cadena = substr( cadena, strpos( cadena, ' ') + 1 , length(
cadena ) );
END LOOP;
RETURN resdo;
END;
$body$
LANGUAGE 'plpgsql' STABLE CALLED ON NULL INPUT SECURITY INVOKER;
Agradezco la ayuda que me puedan dar a mi solicitud.
Atentamente,
--
*Luis Fernando Ortiz Vera.*
*+Luis Fernando Ortiz Vera | **@lfernandortiz *
|Cúcuta|Colombia|
http://www.uci.cu