Thread: String function to Find how many times str2 is in str1?
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
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.
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 >
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