<\/HEAD>
Máte ve své organizaci někoho, kdo KŘIČÍ NA KLÁVESNICI? Všechno je psáno velkými písmeny? Co ti rebelové, kteří píší všechno malými písmeny? Nebo ještě horší, ti ninja, kteří píší PrvníSlovoVelkýmPísmenem-a-všechna-ostatní-malými-písmeny.<\/P>
<\/P>
Mám osobní averzi (OCD). Názvy prvků v GIS by měly být ve formátu Proper Case. Happy Valley Road. Ne Happy valley road, ne Happy valley Road a rozhodně ne HAPPY VALLEY ROAD.<\/P>
<\/P>
Chtěl bych prosadit pojmenování ve formátu Proper Case těchto prvků bez ohledu na to, jak je text napsán editorem. To lze dosáhnout jednoduchou funkcí a triggerem v SQL.<\/P>
<\/P>
Nejprve vytvořte následující funkci:<\/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>Pak tento 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>Poznámka: tento trigger se spustí pouze po vložení záznamu, nikoli po aktualizaci. Může existovat legitimní důvod, proč KŘIČÍCÍ chtějí něco jiného než proper case, např. "ND Happy Valley Road" (ND znamená "North District"). To jim umožňuje (nebo mně poté, co na mě KŘIČÍ) aktualizovat ten jeden prvek bez toho, aby trigger změnil můj edit na proper case.<\/P><\/P>Toto je osobní blog a nedoporučuje, neschvaluje ani nepodporuje výše popsané metody. Úprava dat pomocí SQL mimo software ESRI samozřejmě není podporována a neměla by být aplikována na produkční databázi bez důkladného porozumění a plánu obnovy po havárii.<\/EM><\/P><\/BODY><\/HTML>