Re: Counting the occurences of a substring within a very large text

From: Albe Laurenz <laurenz(dot)albe(at)wien(dot)gv(dot)at>
To: "'Marc Mamin *EXTERN*'" <M(dot)Mamin(at)intershop(dot)de>, Postgres General <pgsql-general(at)postgresql(dot)org>
Subject: Re: Counting the occurences of a substring within a very large text
Date: 2015-06-24 11:43:59
Message-ID: A737B7A37273E048B164557ADEF4A58B50F6824C@ntex2010a.host.magwien.gv.at
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Marc Mamin wrote:
> I'd like to count the number linebreaks within a string,
> but I get a memory allocation error when using regexp_matches or regexp_split_to_table.
>
> Any idea for an alternative to this problem ?
>
> select count(*)-1 from
> ( select regexp_split_to_table(full_message,'(\n)', 'g')
> from mytable
> where id =-2146999703
> )foo;
>
> ERROR: invalid memory alloc request size 1447215584

Does any of these two work:

SELECT length(regexp_replace(full_message, '[^\n]', '', 'g'))
FROM mytable
WHERE id = -2146999703;

or

SELECT length(full_message) - length(replace(full_message, E'\n', ''))
FROM mytable
WHERE id = -2146999703;

Yours,
Laurenz Albe

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Andy Colson 2015-06-24 13:24:45 Re: Counting the occurences of a substring within a very large text
Previous Message Chris Mair 2015-06-24 11:26:17 Re: Counting the occurences of a substring within a very large text