Thread: String function to Find how many times str2 is in str1?

String function to Find how many times str2 is in str1?

From
Emi Lu
Date:
Good morning,

Is there a string function in PSQL to count how many times one str is in 
another string?

For example,
Str1 = "test   test   caa   dtest   testing   EndofString";
Str2 = "   ";

select funcName(Str1, Str2);

return 5

Because Str1 has 5 Str2.

Thanks !
Ly




Re: String function to Find how many times str2 is in str1?

From
"Rodrigo E. De León Plicet"
Date:
On Fri, Feb 15, 2008 at 11:09 AM, Emi Lu <emilu@encs.concordia.ca> wrote:
>  Str1 = "test   test   caa   dtest   testing   EndofString";
>  Str2 = "   ";
>
>  select funcName(Str1, Str2);
>
>  return 5

CREATE OR REPLACE FUNCTION FOOBAR(TEXT,TEXT)
RETURNS INT AS $$ SELECT(LENGTH($1) - LENGTH(REPLACE($1, $2, ''))) / LENGTH($2) ;
$$ LANGUAGE SQL IMMUTABLE;

SELECT FOOBAR('test   test   caa   dtest   testing   EndofString', '   ');
foobar
--------     5
(1 row)

Good luck.


Re: String function to Find how many times str2 is in str1?

From
"Pavel Stehule"
Date:
Hello

what about

CREATE OR REPLACE FUNCTION Foobar(text, text)
RETURNS integer AS $$
SELECT array_upper(string_to_array($1,$2),1) - 1;
$$ LANGUAGE SQL IMMUTABLE;

On 15/02/2008, Rodrigo E. De León Plicet <rdeleonp@gmail.com> wrote:
> On Fri, Feb 15, 2008 at 11:09 AM, Emi Lu <emilu@encs.concordia.ca> wrote:
>  >  Str1 = "test   test   caa   dtest   testing   EndofString";
>  >  Str2 = "   ";
>  >
>  >  select funcName(Str1, Str2);
>  >
>  >  return 5
>
>
> CREATE OR REPLACE FUNCTION
>   FOOBAR(TEXT,TEXT)
>  RETURNS INT AS $$
>   SELECT(LENGTH($1) - LENGTH(REPLACE($1, $2, ''))) / LENGTH($2) ;
>  $$ LANGUAGE SQL IMMUTABLE;
>
>  SELECT FOOBAR('test   test   caa   dtest   testing   EndofString', '   ');
>
>   foobar
>  --------
>       5
>  (1 row)
>
>  Good luck.
>
>  ---------------------------(end of broadcast)---------------------------
>  TIP 2: Don't 'kill -9' the postmaster
>

Re: String function to Find how many times str2 is in str1?

From
Emi Lu
Date:
Pavel Stehule wrote:
> Hello
> 
> what about
> 
> CREATE OR REPLACE FUNCTION Foobar(text, text)
> RETURNS integer AS $$
> SELECT array_upper(string_to_array($1,$2),1) - 1;
> $$ LANGUAGE SQL IMMUTABLE;
> 
> On 15/02/2008, Rodrigo E. De León Plicet <rdeleonp@gmail.com> wrote:
>> On Fri, Feb 15, 2008 at 11:09 AM, Emi Lu <emilu@encs.concordia.ca> wrote:
>>  >  Str1 = "test   test   caa   dtest   testing   EndofString";
>>  >  Str2 = "   ";
>>  >
>>  >  select funcName(Str1, Str2);
>>  >
>>  >  return 5
>>
>>
>> CREATE OR REPLACE FUNCTION
>>   FOOBAR(TEXT,TEXT)
>>  RETURNS INT AS $$
>>   SELECT(LENGTH($1) - LENGTH(REPLACE($1, $2, ''))) / LENGTH($2) ;
>>  $$ LANGUAGE SQL IMMUTABLE;
>>
>>  SELECT FOOBAR('test   test   caa   dtest   testing   EndofString', '   ');
>>
>>   foobar
>>  --------
>>       5
>>  (1 row)
>>
If there is not a system func for this, I will do this way.
Thank you for all inputs.
Ly