Posts
251
Comments
74
Trackbacks
4
Länderpräfixe aus Telefonnummern entfernen

Hier mal ein Beispiel wie man mit einer stored procedure Länderpräfixe aus Telefonnummern entfernen und in ein anderes Feld schreiben kann:

CREATE PROCEDURE TelPrefix
AS
BEGIN
    DECLARE @tel1 VARCHAR(50)
    DECLARE @tel2 VARCHAR(50)
    DECLARE @fax VARCHAR(50)
    DECLARE @prefix_int VARCHAR(50)
    DECLARE @id decimal(15, 0)
    DECLARE @positonKlammer INT
    

    DECLARE #Curs CURSOR fast_Forward FOR
    SELECT [prefixe_int], [tel1], [tel2], [fax], id
    from tabelle
    WHERE (LEFT(tel,1)='+' OR LEFT(tel1,2)='00')

    
    OPEN #Curs
    Fetch next from #Curs into @prefix_int, @tel, @id
    while @@FETCH_STATUS = 0

    BEGIN

        IF LEN(@tel1) > 0 BEGIN

            SET @positonKlammer = PATINDEX('%(%',@tel1) -1
            -- vielleicht gibt es ein Leerzeichen statt einer Klammer
            IF @positonKlammer<0
                SET @positonKlammer = PATINDEX('% %',@tel1)
            -- vielleicht gibt es ein "- "statt einer Klammer
            IF @positonKlammer<0
                SET @positonKlammer = PATINDEX('%-%',@tel1)
            
            IF @positonKlammer>0
            BEGIN

                SET @prefix_int = LEFT(@tel1,@positonKlammer)
                -- keine Klammern und keine führenden und folgenden Leerzeichen
                SET @prefix_int = RTRIM(LTRIM(REPLACE( REPLACE(@prefix_int,'+',''), '00','') ) )
                SET @tel1 = RIGHT(@tel1,LEN(@tel1)-@positonKlammer)
                SET @tel1 = RTRIM(LTRIM(REPLACE( REPLACE(@tel1,'(',''),')','')))
            END

        END


        IF @positonKlammer>0
            UPDATE Tabelle SET tel=@tel, fax=@fax, prefixe_int=@prefix_int WHERE id=@id

       Fetch next from #Curs into @prefix_int, @tel, @id

    END

    CLOSE #Curs
    deallocate #Curs


END

posted on Wednesday, October 31, 2007 2:39 PM Print
Comments
No comments posted yet.

Post Comment

Title *
Name *
Email
Url
Comment *  
Please add 8 and 2 and type the answer here: