I have written functions to get LastName , Credentials, Suffix and Middle Name. I replacing the out put of all these in a name to get First Name. I am getting FirstName as null insted of FirstName. Could any one help me resolve it.
alter function FirstName(@Name varchar(100))
returns varchar(25)
as
begin
declare @FirstName varchar(70)
declare @LastName varchar(100)
declare @Suffix varchar(100)
declare @Cred1 varchar(100)
declare @Cred2 varchar(100)
declare @MiddleName varchar(100)
set @LastName = dbo.LastName(@Name)
set @Suffix = dbo.Suffix(@Name)
set @Cred1 = dbo.Cred(@Name)
set @Cred2 = dbo.Cred2(@Name)
set @MiddleName = dbo.MiddleName(@Name)
set @FirstName = @Name
set @FirstName =case when len(@Cred1) >0
then stuff(@FirstName,charindex('%'+@Cred1+'%',@Name),len(@Cred1),' ')
else @FirstName
end
set @FirstName =case when len(@Cred2) >0
then stuff(@Name,charindex('%'+@Cred2+'%',@Name),len(@Cred2),' ')
else @FirstName
end
set @FirstName =case when len(@Suffix) >0
then stuff(@Name,charindex('%'+@Suffix+'%',@Name),len(@Suffix),' ')
else @FirstName
end
set @FirstName =case when len(@LastName) >0
then stuff(@FirstName,charindex('%'+@LastName+'%',@Name),len(@LastName),' ')
else @FirstName
end
set @FirstName =case when len(@MiddleName) >0
then stuff(@Name,charindex('%'+@MiddleName+'%',@Name),len(@MiddleName),' ')
else @FirstName
end
return @FirstName
end
If
charindex('%'+@MiddleName+'%',@Name)returns a negative value or a value longer than the length of the field it is trying to operate on, e.g.@FirstNameor@Name, then a null string is returned.I would check the values that you are using to see if this is the case.
Check out http://msdn.microsoft.com/en-us/library/ms188043.aspx to see the details of this function.