Einzelnen Beitrag anzeigen

jensw_2000
(Gast)

n/a Beiträge
 
#16

Re: Telefonnummern trennen in Vorwahl-Rufnummer mit TSQL

  Alt 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
  Mit Zitat antworten Zitat