2011-09-21 7 views
0

성, 자격 증명, 접미사 및 중간 이름을 가져 오는 기능을 작성했습니다. 나는이 모든 것을 이름으로 바꾸어 이름을 얻는다. FirstName이 FirstName의 insted null로 표시됩니다. 아무도 내가 그것을 해결할 수 있습니다.코드에서 오류를 찾는 데 도움이 될 수 있습니까?

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('%'[email protected]+'%',@Name),len(@Cred1),' ') 
      else @FirstName 
      end 
set @FirstName =case when len(@Cred2) >0 
      then stuff(@Name,charindex('%'[email protected]+'%',@Name),len(@Cred2),' ') 
      else @FirstName 
      end 
set @FirstName =case when len(@Suffix) >0 
      then stuff(@Name,charindex('%'[email protected]+'%',@Name),len(@Suffix),' ') 
      else @FirstName 
      end 
set @FirstName =case when len(@LastName) >0 
      then stuff(@FirstName,charindex('%'[email protected]+'%',@Name),len(@LastName),' ') 
      else @FirstName 
      end 
set @FirstName =case when len(@MiddleName) >0 
      then stuff(@Name,charindex('%'[email protected]+'%',@Name),len(@MiddleName),' ') 
      else @FirstName 
      end 

return @FirstName 

end 

답변

0

charindex('%'[email protected]+'%',@Name)가 음의 값 이상이에 운영하려고하는 필드의 길이, 예를 들어,보다 값을 반환하면 @FirstName 또는 @Name이면 null 문자열이 반환됩니다.

이 경우에 사용하고있는 값을 확인합니다.

이 기능의 세부 정보는 http://msdn.microsoft.com/en-us/library/ms188043.aspx을 확인하십시오.

+0

예 :-) 그런 일이 일어나고 있습니다. 나는 그것을 깨달을 수 없었다. Tanq. – Shine

+0

아래 작업을 해주시기 바랍니다. 위의 교체 작업 비트를 수행 한 후 수행중인 작업을 수행 할 수 있습니까? – Shine

관련 문제