2014-10-28 6 views
0

에 기능을 실행하면 I 적절한 경우에 텍스트로 변환 다음과 같은 기능을 가지고 :특정 열

USE [Messaging] 
GO 
/****** Object: UserDefinedFunction [dbo].[ProperCase] Script Date: 10/28/2014 11:42:05 ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
ALTER Function [dbo].[ProperCase](@Text as varchar(8000)) 
returns varchar(8000) 
as 
begin 
    declare @Reset bit; 
    declare @Ret varchar(8000); 
    declare @i int; 
    declare @c char(1); 

    select @Reset = 1, @i=1, @Ret = ''; 

    while (@i <= len(@Text)) 
      select @c= substring(@Text,@i,1), 
       @Ret = @Ret + case when @Reset=1 then UPPER(@c) else LOWER(@c) end, 
       @Reset = case when @c like '[a-zA-Z]' then 0 else 1 end, 
       @i = @i +1 
    return @Ret 
end 

기능은 작동합니다. select dbo.propercase ('DOE, JOHN')을 실행하면 "Doe, John"이 출력됩니다. 그게 내가 원하는거야. 문제는 사서함 테이블의 MailBoxName 필드에서이 함수를 실행하려고합니다. 어떻게해야합니까?

+0

내 의견 : 프레젠테이션 계층에서이 작업을 수행하십시오. 또한'Julio de la SanMarcos'와'Jean-Pierre le VanWyck III'와 같은 이름을주의하십시오. –

답변

0

업데이트 문을 사용하면됩니다. 그러면 사서함 테이블의 MailBoxName 필드에 대해 dbo.propercase 함수가 실행되고 MailBoxNames가 propercase로 업데이트됩니다.

UPDATE Mailbox 
SET MailBoxName = dbo.propercase(MailBoxName) 
+1

그게 전부 였어. 고맙습니다! –

+0

문제 없습니다 @DelDunbar, 도움이되어 기쁩니다. – Donal

0

그냥

select dbo.propercase (MailBoxName) as Proper 
from Mailbox 

왜이 신비이었다 SELECT 문에 넣어?

+0

아, 모르겠다. 어쩌면 내가 어떻게 해야할지 몰랐기 때문에 !! 우리 중 대부분은 당신과 같은 25 년 이상의 경험이 없습니다. –

+0

@DelDunbar - 이것은 SQL의 함수 사용에 관한 모든 문서/책에 있습니다. – Hogan

0
SELECT *, dbo.propercase(MailBoxName) AS ProperCaseMailBoxName 
FROM Mailbox