(Gast)
n/a Beiträge
|
Re: Telefonnummern trennen in Vorwahl-Rufnummer mit TSQL
20. Nov 2005, 22:39
Die akuelle Funktion schieht bei mit so aus ...
Sie ist relativ schnell und läuft stabil ...
SQL-Code:
CREATE FUNCTION SYSF_GetSplittedTelNumber (@TelNr VARCHAR(25) )
RETURNS VARCHAR(25)
AS
BEGIN
DECLARE @TestVorwahl VARCHAR(25)
DECLARE @Dummy VARCHAR(25)
DECLARE @TempResult VARCHAR(25)
SET @TelNr = REPLACE (@TelNr,'-','')
SET @TelNr = REPLACE (@TelNr,' ','')
SET @TelNr = REPLACE (@TelNr,'/','')
SET @TelNr = REPLACE (@TelNr,'(','')
SET @TelNr = REPLACE (@TelNr,')','')
SET @TelNr = REPLACE (@TelNr,'_','')
SET @TelNr = REPLACE (@TelNr,'+','')
SET @TelNr = REPLACE (@TelNr,'\','')
SET @TelNr = REPLACE (@TelNr,'"','')
SET @TelNr = REPLACE (@TelNr,'.','')
SET @TelNr = REPLACE (@TelNr,':','')
SET @TelNr = REPLACE (@TelNr,'*','')
SET @TelNr = REPLACE (@TelNr,'#','')
SET @TelNr = REPLACE (@TelNr,'@','')
SET @TelNr = REPLACE (@TelNr,'%','')
SET @TelNr = REPLACE (@TelNr,'¦','')
SET @TelNr = REPLACE (@TelNr,'$','')
SET @TelNr = REPLACE (@TelNr,'&','')
SET @TelNr = REPLACE (@TelNr,',','')
SET @TelNr = REPLACE (@TelNr,'-','')
SET @TelNr = REPLACE (@TelNr,'/','')
SET @TelNr = REPLACE (@TelNr,'(','')
SET @TelNr = REPLACE (@TelNr,')','')
SET @TelNr = REPLACE (@TelNr,'a','')
SET @TelNr = REPLACE (@TelNr,'b','')
SET @TelNr = REPLACE (@TelNr,'c','')
SET @TelNr = REPLACE (@TelNr,'d','')
SET @TelNr = REPLACE (@TelNr,'e','')
SET @TelNr = REPLACE (@TelNr,'f','')
SET @TelNr = REPLACE (@TelNr,'g','')
SET @TelNr = REPLACE (@TelNr,'h','')
SET @TelNr = REPLACE (@TelNr,'i','')
SET @TelNr = REPLACE (@TelNr,'j','')
SET @TelNr = REPLACE (@TelNr,'k','')
SET @TelNr = REPLACE (@TelNr,'l','')
SET @TelNr = REPLACE (@TelNr,'m','')
SET @TelNr = REPLACE (@TelNr,'n','')
SET @TelNr = REPLACE (@TelNr,'o','')
SET @TelNr = REPLACE (@TelNr,'p','')
SET @TelNr = REPLACE (@TelNr,'q','')
SET @TelNr = REPLACE (@TelNr,'r','')
SET @TelNr = REPLACE (@TelNr,'s','')
SET @TelNr = REPLACE (@TelNr,'t','')
SET @TelNr = REPLACE (@TelNr,'u','')
SET @TelNr = REPLACE (@TelNr,'v','')
SET @TelNr = REPLACE (@TelNr,'w','')
SET @TelNr = REPLACE (@TelNr,'x','')
SET @TelNr = REPLACE (@TelNr,'y','')
SET @TelNr = REPLACE (@TelNr,'z','')
SET @TelNr = REPLACE (@TelNr,'A','')
SET @TelNr = REPLACE (@TelNr,'B','')
SET @TelNr = REPLACE (@TelNr,'C','')
SET @TelNr = REPLACE (@TelNr,'D','')
SET @TelNr = REPLACE (@TelNr,'E','')
SET @TelNr = REPLACE (@TelNr,'F','')
SET @TelNr = REPLACE (@TelNr,'G','')
SET @TelNr = REPLACE (@TelNr,'H','')
SET @TelNr = REPLACE (@TelNr,'I','')
SET @TelNr = REPLACE (@TelNr,'J','')
SET @TelNr = REPLACE (@TelNr,'K','')
SET @TelNr = REPLACE (@TelNr,'L','')
SET @TelNr = REPLACE (@TelNr,'M','')
SET @TelNr = REPLACE (@TelNr,'N','')
SET @TelNr = REPLACE (@TelNr,'O','')
SET @TelNr = REPLACE (@TelNr,'P','')
SET @TelNr = REPLACE (@TelNr,'Q','')
SET @TelNr = REPLACE (@TelNr,'R','')
SET @TelNr = REPLACE (@TelNr,'S','')
SET @TelNr = REPLACE (@TelNr,'T','')
SET @TelNr = REPLACE (@TelNr,'U','')
SET @TelNr = REPLACE (@TelNr,'V','')
SET @TelNr = REPLACE (@TelNr,'W','')
SET @TelNr = REPLACE (@TelNr,'X','')
SET @TelNr = REPLACE (@TelNr,'Y','')
SET @TelNr = REPLACE (@TelNr,'Z','')
IF @TelNr IS NULL OR LEN(LTRIM(@TelNr))<4
BEGIN
SET @TempResult = ''
END
ELSE BEGIN
SET @TestVorwahl = @TelNr
SELECT TOP 1 @Testvorwahl=Vorwahl
FROM SYSF_Vorwahlen()
WHERE Vorwahl< @Testvorwahl
ORDER BY Vorwahl DESC
SET @Testvorwahl = ISNULL(@Testvorwahl,'')
IF LEFT(@TelNr,LEN(@Testvorwahl))<>@Testvorwahl SET @Testvorwahl=''
SET @TempResult= @TestVorwahl+'-'+RIGHT(@TelNr,LEN(@TelNr)-LEN(@TestVorwahl))
IF LEFT(@TempResult,1)='-' SET @TempResult=RIGHT(@TempResult,LEN(@TempResult)-1)
END
RETURN @TempResult
END
Wichtig ist auch, das man prüft, ob die Rufnummer überhaupt mit der gefundenen Vorwahl beginnt. Sonst gibt es bei ungültigen Rufnummern(die nicht mit einer gültigen Vorwahl anfangen) "Zahlensalat", weil einfach die nächst kleinere Vorwahl zurückgegeben wird.
Zitat:
Also statt einzelne Zeichen zu entfernen, wieso sorgst du nicht dafür, dass du nur die Ziffern betrachtest.
Dafür habe ich leider noch keine passende SQL-Funkttion gefunden ...
Wie geht das ?
Schöne Grüße,
Jens
|