Как найти каждое третье слово из строки
Я пытаюсь создать функцию, которая принимает строку в качестве аргумента, как в следующем примере
this is a sample string and i need to use uppercase letter for every third word in this string
и как получить вывод как ниже
position;word
-------------
3 ;"a"
6 ;"and"
9 ;"to"
12 ;"letter"
15 ;"third"
18 ;"this"
Я знаю, как создать функцию, но я не смог найти способ найти желаемый результат
create or replace function fn_every_third(str text) returns table(pos bigint,wrd text) as
$$
--code to get the output
$$
language sql
1 ответ
create or replace function fn_every_third(str text) returns table(pos bigint,wrd text) as
$$
with cte as(
select * from(
select row_number() over() rn,word from(
select unnest(regexp_split_to_array(str,' ')) word)t)q
)
select rn ,word from cte
where rn in (select generate_series(3,(select max(rn) from cte),3))
order by rn
$$
language sql
Использование:
select *
from fn_every_third('this is a sample string and i need to use uppercase letter for every third word in this string')
Ссылка: