UpLower
Nur ein kleines Gimmick für den MS SQL Server:
In manchen Fällen liegen einem Text komplett in Großschrift vor, was sich sehr schlecht lesen lässt. Komplett in Kleinbuchstaben ist zwar etwas besser lesbar, aber eben auch nur etwas. Um solche Texte aufbereiten zu können, habe ich mir eine kleine UDF als T-SQL erstellt, die alles in Kleinbuchstaben umwandelt und anschließend den ersten Buchstaben eines Wortes durch einen Großbuchstaben ersetzt.
-- Alte Version löschen, wenn vorhanden IF NOT OBJECT_ID('dbo.fnUpLower', 'fn') IS NULL
DROP FUNCTION dbo.fnUpLower GO -- UDF neu anlegen CREATE FUNCTION dbo.fnUpLower
(@Text as varchar(max)) RETURNS varchar(max) AS -- fnUpLower - Stand 11.02.2009 -- Wandelt Text in Kleinbuchstaben mit dem ersten Zeichen -- eines Wortes als Großbuchstaben um BEGIN DECLARE @Loop smallint, @Lower char(1), @Upper char(1); IF LEN(ISNULL(@Text, '')) > 0 -- Nur wenn es auch Text gibt BEGIN SET @Text = LOWER(@Text) SET @Loop = 97 -- Sonderfall: Erstes Zeichen ohne vor. Leerzeichen SET @Text = UPPER(LEFT(@Text, 1)) + SUBSTRING(@Text, 2, LEN(@Text) - 1); WHILE @Loop <= 255 BEGIN SET @Lower = CHAR(@Loop); SET @Upper = UPPER(@Lower); -- Replace nur wenn nötig; Str-Ops sind "teuer" IF ASCII(@Lower) <> ASCII(@Upper) BEGIN -- Erstes Zeichen nach Space oder Slash auf UPPER SET @Text = REPLACE(@Text, ' ' + @Lower, ' ' + @Upper); SET @Text = REPLACE(@Text, '/' + @Lower, '/' + @Upper); END SET @Loop = @Loop + 1; END END RETURN @Text; END GO -- Test SELECT dbo.fnUpLower('TEST THE WEST, MCDONNI: HIER/HEUTE');
-- Gibt es Fehler in Ausnahmefällen? SELECT dbo.fnUpLower(''); -- Leer
SELECT dbo.fnUpLower(NULL); -- NULL
GO
Ergebnis:
------------------------------------ Test The West, Mcdonni: Hier/Heute (1 Zeile(n) betroffen) ------------------------------------ (1 Zeile(n) betroffen) ------------------------------------ NULL (1 Zeile(n) betroffen)