2014-10-28 34 views
0

执行功能,我有以下功能将文本转换为正确的大小写:在一个特定的列

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'这样的名字。 – 2014-10-28 17:46:36

回答

0

你可以用更新语句来做到这一点。这将针对邮箱表上的MailBoxName字段运行dbo.propercase函数 - 这会将MailBoxNames更新为适当格式。

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

就是这样。谢谢! – 2014-10-28 17:22:19

+0

没问题@DelDunbar,很高兴能有所帮助。 – Donal 2014-10-28 17:24:10

0

只是把它放在一个select语句

select dbo.propercase (MailBoxName) as Proper 
from Mailbox 

为什么这是个谜?

+0

哦,我不知道。也许是因为我不知道该怎么做!我们大多数人没有25年以上的经验。 – 2014-10-29 18:20:25

+0

@DelDunbar - 这将在任何关于在SQL中使用函数的文档/书籍中。 – Hogan 2014-10-29 19:38:15

0
SELECT *, dbo.propercase(MailBoxName) AS ProperCaseMailBoxName 
FROM Mailbox 
相关问题