Below shown is a function which will parseDeclare @full_name varchar(100)DECLARE @name_separator char(1)SET @name_separator ='#'SET @full_name = 'Alex#Joseph#K'select dbo.udf_dd_format_name_lfm_s(@full_name,'#',1) as first_nameselect dbo.udf_dd_format_name_lfm_s(@full_name,'#',2) as middle_nameselect dbo.udf_dd_format_name_lfm_s(@full_name,'#',3) as last_nameThe above select will give me the correct parsed names.Now the business wants something where they have the same name SET @full_name = 'Alex#Joseph#K'But the last_name will be 'Alex',first_name will be 'Joseph' andmiddle_name will be 'K'Basically when they pass the @extracted_position = 1 it should returnthe value from the first_position and 2 will return from the second postion and 3 will return from the third postion.So that if they can pass 1 and assign the name to last_name instead of first_name...Can somebody help me make this intelligent function algorithmCREATE FUNCTION [dbo].[udf_dd_format_name_lfm_s] ( @full_name VARCHAR(120), @name_separator CHAR(1), @extracted_position INT ) RETURNS VARCHAR(100) AS BEGIN DECLARE @first_name varchar(100) DECLARE @middle_name varchar(100) DECLARE @last_name varchar(100) DECLARE @extracted_name VARCHAR(100) SELECT @first_name=SUBSTRING(@full_name,0,CHARINDEX(@name_separator,@full_name)) SELECT @full_name=REPLACE(@full_name,@first_name+@name_separator,'') SELECT @middle_name=REPLACE(SUBSTRING(@full_name,0,CHARINDEX(@name_separator,@full_name)),@name_separator,'') SELECT @last_name=REPLACE(REPLACE(@full_name,@middle_name+@name_separator,''),@name_separator,'') IF @last_name='' BEGIN SET @last_name =@middle_name SET @middle_name='' END IF @extracted_position = 1 BEGIN IF @first_name='' SET @extracted_name=NULL ELSE SET @extracted_name=@first_name END ELSE IF @extracted_position = 2 BEGIN IF @middle_name='' SET @extracted_name=NULL ELSE SET @extracted_name=@middle_name END ELSE IF @extracted_position = 3 BEGIN IF @last_name='' SET @extracted_name=NULL ELSE SET @extracted_name=@last_name END RETURN @extracted_name END