1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Format für eine Telefonnummer festlegen

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von Darwin66, 9 Januar 2012.

  1. Darwin66

    Darwin66 Neuer Benutzer

    Ich habe eine Abfrage erstellt:

    (s. Printscreen) und wollte Fragen ob es eine Möglichkeit besteht das Format der Telefonnumer zu ändern.

    Das Format soll so sein: +41 (0)44 360 41 25.

    Danke für die Hilfe
    Query.png
     
  2. ukulele

    ukulele Datenbank-Guru

    Wenn ich das richtig sehe ist das eigentlich kein Format das durch die Datenbank vorgegeben wird sondern einfach nur eine Zeichenkette maximal 30 Zeichen lang. Das "Format" wird vermutlich nur durch die Anwendung bestimmt. Natürlich kann man die Ausgabe manipulieren, wenn allerdings die Länge und Zusammensetzung der Nummer variiert (z.B. mal Handyvorwahl, mal Ortsvorwahl) etc. wird das sehr schwer. In diesem Fall würde ich auch dazu raten, das nicht in der Abfrage sondern in einer Stored Procedure zu tun.
     
  3. Darwin66

    Darwin66 Neuer Benutzer

    Die Auswertung erstelle ich mit iReport; heisst das dass ich im iReport diese "Stored Procedure" zu erstellen habe?
     
  4. ukulele

    ukulele Datenbank-Guru

    Die Stored Procedure ist soetwas wie eine eigene Funktion. Du schreibst sie in Transact SQL (manche DBMS ermöglichen glaube ich auch andere Sprachen) und kannst sie von da an in einer Abfrage nutzen. Z.B. wie len(wert) was dir die Länge einer Zeichenkette ausgibt. Die SP trägt auch zur Geschwindigkeit eines SELECTs bei. Natürlich kann man es auch direkt in die Abfrage schreiben aber das kann sehr unübersichtlich werden.

    http://dev.mysql.com/doc/refman/5.0/en/stored-routines.html

    Hier mal ein Beispiel:
    Code:
    DECLARE    @tmp VARCHAR(20) = '+41443604125'
     
    SELECT    left(@tmp,3) -- Problem Nr.1: Erkennen, ob Ländervorwahl 2 oder 3 stellig
            + ' (0)' + right(left(@tmp,5),2) -- Problem Nr.2: Länge Ortsvorwahl bzw. Handynetz erkennen
            + ' ' + right(left(@tmp,8),3) -- Problem Nr.3: Wie sollen die Blöcke aufgeteilt werden? Normalerweise fassen Menschen gerne wiederkehrende Nummern als Block zusammen, z.B. 7676 630. Es gibt dafür keine Norm.
            + ' ' + right(left(@tmp,10),2)
            + ' ' + right(left(@tmp,12),2) 
     
  5. ukulele

    ukulele Datenbank-Guru

    Sry ich glaube ich habe mich vertan. Ich arbeite unter MSSQL mit Funktionen, nicht Stored Procedures. Ich bin mir nicht sicher ob bei einer SP ein RETURN möglich ist etc. also eventuell musst du bei MySQL mal nach Funktionen schauen die Werte zurück geben können.
     

Diese Seite empfehlen