2009/7/6 Rubens José Rodrigues <[email protected]>

>  <corte>
> a) Contar a presença de uma determinada string dentro de outra string. Ex.:
> strcount(‘a’,’amanhã’)(*), aqui esta função contaria a incidência da
> substring ‘a’ na string ‘amanhã’ me retornado o valor 2.
>

Caro Rubens,

Função nativa do PostgreSQL para solucionar esse teu problema creio que não
tenha (pelo menos não encontrei na documentação [1])

Mas rapidinho podemos solucionar esse impasse:

create or replace function strcount(text, text) returns bigint as
$$
  select sum(conta)
    from (select case
                   when substr($2, i, 1) = $1 then
                     1
                   else
                     0
                 end as conta
            from generate_series(1, length($2)) as i) as x;
$$
language sql;


E um teste rápido:


bdteste=# select strcount('i', 'Fabrizio');
 strcount
----------
        2
(1 row)

bdteste=# select strcount('a', 'amanhã');
 strcount
----------
        2
(1 row)


Espero ter ajudado.


[1] http://www.postgresql.org/docs/8.4/interactive/functions-string.html


Cordialmente,

-- 
Fabrízio de Royes Mello
>> Blog sobre PostgreSQL: http://fabriziomello.blogspot.com
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a