2014-10-28 2 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 в таблице Mailbox. Как мне это сделать?

+0

Мое предложение: сделать это в уровне презентации. Также следите за именами, такими как 'Julio de la SanMarcos' и' Jean-Pierre le VanWyck III'. –

ответ

0

Вы можете сделать это с помощью инструкции обновления. Это запустит функцию dbo.propercase в поле MailBoxName в таблице почтового ящика - которая обновит MailBoxNames до правильного.

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

Вот и все. Спасибо! –

+0

Без проблем @DelDunbar, рад помочь. – Donal

0

Просто поместите его в отборного заявления

select dbo.propercase (MailBoxName) as Proper 
from Mailbox 

Почему это тайна?

+0

О, я не знаю. Может быть, потому, что я не знал, как это сделать! Большинство из нас не имеют опыта более 25 лет, как и вы. –

+0

@DelDunbar - Это было бы в любой документации/книге по использованию функций в SQL. – Hogan

0
SELECT *, dbo.propercase(MailBoxName) AS ProperCaseMailBoxName 
FROM Mailbox 
Смежные вопросы