Use CHOOSE function to get the result. Try this..
Note : This will work only in SQL SERVER 2012+.. If you want to use it on earlier version just use Case statements instead of Choose. Just to simply the code i have used CHOOSE function
CREATE FUNCTION dbo.Func (@dayss VARCHAR(1000))
returns VARCHAR(1000)
BEGIN
DECLARE @cnt INT =1,
@outpt VARCHAR(100),
@fina VARCHAR(100)='',
@outpt1 VARCHAR(100)=''
WHILE @cnt <= Len(@dayss)
BEGIN
SET @outpt = Substring(@dayss, @cnt, 1)
SELECT @outpt1 = CASE
WHEN @outpt = 1 THEN @outpt
+ Choose(@cnt, ':sunday ', ':monday ', ':tuesday ', ':wednesday ', ':thursday ', ':friday ', ':saturday ')
ELSE @outpt + ':absent '
END
SET @fina += @outpt1
SET @cnt+=1
END
RETURN @fina
END
SELECT dbo.Func('1001101')
OUTPUT : 1:sunday 0:absent 0:absent 1:wednesday 1:thursday 0:absent 1:saturday
To get the final OUTPUT
CREATE FUNCTION dbo.Funcfinal (@dayss VARCHAR(1000))
returns VARCHAR(1000)
BEGIN
DECLARE @cnt INT =1,
@outpt VARCHAR(100),
@fina VARCHAR(100)='',
@outpt1 VARCHAR(100)=''
WHILE @cnt <= Len(@dayss)
BEGIN
SET @outpt = Substring(@dayss, @cnt, 1)
SELECT @outpt1 = CASE
WHEN @outpt = 1 THEN Choose(@cnt, 'sunday ', 'monday ', 'tuesday ', 'wednesday ', 'thursday ', 'friday ', 'saturday ')
ELSE ''
END
SET @fina += @outpt1
SET @cnt+=1
END
RETURN @fina
END
SELECT dbo.Funcfinal('1001101')
OUTPUT : sunday wednesday thursday saturday