<\/HEAD>
Você tem alguém na sua organização que GRITA COM O TECLADO? Tudo em maiúsculas? E quanto às pessoas rebeldes que escrevem tudo em minúsculas? Ou pior ainda, os ninjas do Primeiro-palavra-com-inicial-maiúscula-todas-as-outras-palavras-em-minúscula.<\/P>
<\/P>
Eu tenho uma implicância pessoal (TOC). Nomes de feições em GIS devem estar em Proper Case. Happy Valley Road. Não Happy valley road, não Happy valley Road, e definitivamente não HAPPY VALLEY ROAD.<\/P>
<\/P>
Eu gostaria de aplicar a nomeação em Proper Case dessas feições independentemente de como o texto for digitado pelo editor. Isso pode ser feito com uma simples Função e Trigger em SQL.<\/P>
<\/P>
Primeiro crie a seguinte Função:<\/P>
<\/P>
create 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
GO<\/PRE><\/P>Depois este Trigger:<\/P><\/P>CREATE TRIGGER [dbo].[NAME_UPDATE]
ON [dbo].[SOME_TABLE]
AFTER INSERT NOT FOR REPLICATION
AS BEGIN
SET NOCOUNT ON;
UPDATE SOME_TABLE
SET
NAME = dbo.Propercase(NAME)
END
GO<\/PRE><\/P>Note aqui que isso só é acionado após um insert, não um update. Pode haver uma razão legítima para os GRITADORES quererem algo diferente de proper case, por exemplo "ND Happy Valley Road" (ND para "North District"). Isso permite que eles (ou eu depois que eles GRITAREM comigo) atualizem essa única feição sem que o trigger altere para proper case minha edição.<\/P><\/P>Este é um blog pessoal e não recomenda, endossa ou apoia os métodos descritos acima. A alteração de dados usando SQL fora da pilha de software ESRI, claro, não é suportada e não deve ser aplicada a um banco de dados de produção sem um entendimento completo e plano de recuperação de desastres.<\/EM><\/P><\/BODY><\/HTML>