Format für eine Telefonnummer festlegen

Darwin66

Neuer Benutzer
Beiträge
2
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
 
Werbung:

ukulele

Datenbank-Guru
Beiträge
4.702
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.
 

ukulele

Datenbank-Guru
Beiträge
4.702
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)
 
Werbung:

ukulele

Datenbank-Guru
Beiträge
4.702
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.
 
Oben