Announcement

Collapse
No announcement yet.

Zeichen in SQL-Abfrage löschen

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

  • Zeichen in SQL-Abfrage löschen

    Hallo,

    hab an sich ein kleines Problem, MSSQL 7.0.

    In einer Tabelle Telefon stehen die Telefonnummern z.B.:

    '0043-0711/34234 -65'

    nun will ich die Zeichen '/', '-', ' ' ... in einer Abfrage entfernen.
    Select rtrim(ltrim(REPLACE( REPLACE(REPLACE(REPLACE(NrTel,'-','')
    ,'/','')
    ,' ','')
    ,' ','')
    )
    )
    from TELEFON

    Das Ergebnis : '0043 0711 34234 65'
    nur ich hätt gern: '004307113423465'
    Was muß ich noch tun ?
    Replace(NrTel,'-','') fügt immer noch ein Leerzeichen ein!

    Danke

    Gruß joe

  • #2
    Hallo,

    ich kann das Problem mit dem MS SQL Server 2000 SP2 nicht nachvollziehen:
    <pre>
    USE tempdb
    GO

    CREATE TABLE JoeTbl (
    RecID INTEGER NOT NULL IDENTITY PRIMARY KEY,
    Wert VARCHAR(10))
    GO
    INSERT INTO JoeTbl (Wert) VALUES ('12 34');
    GO
    SELECT * FROM JoeTbl

    SELECT REPLACE(Wert,' ','') FROM JoeTbl
    GO

    INSERT INTO JoeTbl (Wert) VALUES ('12/34');
    SELECT * FROM JoeTbl

    SELECT REPLACE(REPLACE(Wert,'/',''),' ','') FROM JoeTbl
    </pre>
    Ergebnis:
    <pre><i>
    -------------------------------------
    1234
    1234

    (2 row(s) affected)</i>
    </pre&gt

    Comment


    • #3
      Hallo Joe,<BR><BR>ich würde dir sogar empfehlen die Sonderzeichen auf der Datenbank nicht zu entfernen. Es ist sehr schwer in einer Applikation sinnvolle Formatierungsvorgaben für die Eingabe von Telefonnummern zu gestalten. Auch hat jeder User da so seinen persönlichen Geschmack...?! Ich habe das so gelöst, dass ich bei der Abfrage nach einer Telefonnummer zwischen allen eingegeben Zahlen sowie davor (Vorwahl) ein "%" für eine LIKE Abfrage setze (Beispiel: LIKE '%0%7%1%1%3%4%2%3%4%6%5'). Dann spielen Sonderzeichen keine Rolle mehr. Vielleicht sieht es auf den ersten Blick so aus, dass dann zu viele Ergebnisse zurückgeliefert werden aber das kann ich aus meiner Praxis nicht bestätigen! Die zurückgegeben Nummer sind dann auch besser lesbar. Man sieht Vorwahlen, Durchwahlen, Nebenstellen usw., was bei der Entfernung der Sonder- und Leerzeichen nur schwer zu erkennen ist.<BR><BR>Gruß Ola

      Comment


      • #4
        Hallo,

        das Problem ist der Kompatibilitäslevel!
        Bei Level < 7.0 kommt '0043 0711 34234 65'
        bei level >= 7.0 '004307113423465'.

        habe noch die BDE im Einsatz; kann deswegen nicht auf Level 7.0 wechseln.

        Schwierig, schwierig...
        werd mal die Idee von Olaf angehen.

        Gruß jo

        Comment

        Working...
        X