Select dbo.GetAcronym('Hello World Whats Up', ' ')
/* There are 2 spaces between World and Whats */
will return HW WU
The function definition is as follows. It uses Common Table Expression with Union All to run a recursive query.
CREATE function dbo.GetAcronym
(
@str varchar(4000), @separator char(1) = ' '
)
returns varchar(4000)
as
begin
declare @retVal varchar(4000)
if @separator is null
begin
set @separator = ' '
end
;with tokens(p, a, b)
as
(
select 1, 1, charindex(@separator, @str)
union all
select p + 1, b + 1, charindex(@separator, @str, b + 1)
from tokens /* Recursive Query via Common Table Expression is used along with Union All */
where b > 0
)
select @retVal = convert(
varchar(4000),
(select substring (@str, a, 1) from tokens for xml path (''), type ),
1
)
return @retVal
end
No comments:
Post a Comment