Announcement

Collapse
No announcement yet.

Probleme SQL Replace

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Probleme SQL Replace

    Hallo Forum Mitglieder !

    sitze vor einer Aufgabe die mir etwas schwierig erscheint. Vielleicht hat ja jemand eine Idee. Möchte über eine SQL-Abfrage ein Textfeld aktualisieren. In einem Datenbankfeld sind Telefonnummern hinterlegt, z.B.

    Name Telefonnr
    ABC 08261-930129
    DEF 08261-930-161
    GHI 00335-76723630
    JKL 00335-7672-3630
    MNO 0173-3054668
    PQR 08261/930-144
    STU 08261 - 930111

    Nun ist mein Ziel, dass alle Telefonnummern nach dieser Aktualisierungsabfrage einheitlich erfasst sind. Hierfür müsste ich in Worten folgende Abfragen durchführen:

    1. Ersetze alle '/' durch ein '-'
    2. Nimm alle Leerstellen raus
    3. Sollte es einen zweiten '-' geben, muss dieser gelöscht werden, außer bei
    internationalen Ländern.

    Ergebnis dann also so:
    Ortsgespräche: 07361-920149
    Ferngespräche: 02861-603266
    Internationale Gespräche: 0033-54675-9699
    Mobilgespräche: 0175-2065854

    Habe die Frage auch bereits in einem Access Forum gestellt. Habe dann folgenden Befehl gesagt bekommen:

    UPDATE test SET test.Telefon = Replace(Replace(Replace(Replace(Replace([Telefon],"/","-")," ",""),"-","#",1,1),"-",""),"#","-")
    WHERE (((test.Telefon)<>"")) and [UEkunde]="SCHUMAG AG";

    Dieser funktioniert zwar in Access in einer Testumgebung, aber nicht in SQL. Grund ist die Replaceanweisung Replace ("-","#",1,1).

    Wißt Ihr hier weiter ?

    Danke und Gruß Daniel

  • #2
    Hallo!

    In zwei Druchgängen gehts:

    [highlight=sql]
    create table tempdb.dbo.testertelefon ( nummer varchar(50), nummerneu varchar(50) )
    insert into tempdb.dbo.testertelefon values ( '123 / 45 6 - a bc', '' )
    insert into tempdb.dbo.testertelefon values ( '08261-930129', '' )
    insert into tempdb.dbo.testertelefon values ( '08261-930-161', '' )
    insert into tempdb.dbo.testertelefon values ( '00335-76723630', '' )
    insert into tempdb.dbo.testertelefon values ( '00335-7672-3630', '' )
    insert into tempdb.dbo.testertelefon values ( '0173-3054668', '' )
    insert into tempdb.dbo.testertelefon values ( '08261/930-144', '' )
    insert into tempdb.dbo.testertelefon values ( '08261 - 930111', '' )
    update tempdb.dbo.testertelefon set nummerneu = replace ( replace ( nummer, '/', '-' ), ' ', '' )
    update tempdb.dbo.testertelefon set nummerneu = left ( nummerneu, charindex ( '-', nummerneu )) + replace ( right ( nummerneu, len ( nummerneu ) - charindex ( '-', nummerneu )), '-', '') from tempdb.dbo.testertelefon
    select * from tempdb.dbo.testertelefon
    [/highlight]

    BYE BERND

    Comment


    • #3
      Hallo Bernd,

      Vielen Dank für Deine schnelle Antwort. Werde es testen. Habe leider keine Testumgebung, ist daher immer etwas gewagt.

      Feedback kommt, danke!

      Gruß Daniel

      Comment


      • #4
        Hallo Bernd,

        bin schlimm. Habe es nicht abwarten können und habe Deine SQL-Anweisung durchgeführt.

        -->ES FUNKTIONIERT !!!!!

        Werde noch einen weiteren Test machen und dann das Update durchführen. Vielen DANK!!!!!


        Gruß Daniel

        Comment

        Working...
        X