Sql server 在特定列上执行函数

Sql server 在特定列上执行函数,sql-server,sql-function,Sql Server,Sql Function,我有以下功能,可以将文本转换为正确的大小写: 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))

我有以下功能,可以将文本转换为正确的大小写:

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
使用[消息传递]
去
/******对象:UserDefinedFunction[dbo].[ProperCase]脚本日期:10/28/2014 11:42:05******/
将ANSI_空值设置为ON
去
在上设置带引号的\u标识符
去
ALTER函数[dbo].[ProperCase](@Text作为varchar(8000))
返回varchar(8000)
作为
开始
声明@Reset位;
声明@Ret varchar(8000);
声明@i int;
声明@c字符(1);
选择@Reset=1、@i=1、@Ret='';

while(@i您可以使用update语句来执行此操作。这将对邮箱表上的MailBoxName字段运行dbo.propercase函数,该字段将MailBoxName更新为propercase

UPDATE Mailbox
SET MailBoxName = dbo.propercase(MailBoxName)

把它放在select语句中

select dbo.propercase (MailBoxName) as Proper
from Mailbox

为什么这是一个谜?

就是这样。谢谢!没问题@DelDunbar,很高兴能帮上忙。我的建议是:在演示层这样做。还要注意像Julio de la SanMarcos
和Jean-Pierre le VanWyck III这样的名字。哦,我不知道。可能是因为我不知道怎么做!!我们大多数人都没有25岁以上的时间像你这样的经验。@DelDunbar-这将出现在任何关于在SQL中使用函数的文档/书籍中。
SELECT *, dbo.propercase(MailBoxName) AS ProperCaseMailBoxName
FROM Mailbox