napperman
Goto Top

Erstes Zeichen in SQL Datenbank prüfen und ersetzen

Hallo zusammen!

Ich habe hier eine MySQL-Datenbank mit den Daten unserer Kunden.
Nun möchte ich gern die Telefonnumern unserer Kunden anpassen:
Bei ausländischen Kunden ist die nummer im kanonischen Format hinterlegt.
Bei deutschen Kunden nicht. Da habe ich nur die Vorwahl mit führenden Null. Das soll nun auch kanonisch.
Ich bräuchte also ein SQL-Script welches in einer bestimmten Spalte einer Tabelle die Daten untersucht, ob sie mit einer 0 beginnen. Diese müsste dann durch +49 ersetzt werden.
Kann mir jemand auf die Sprünge helfen?
Ich komme mit Replace ja nicht weiter, da mir dann ja auch Nullen in der Nummer ersetzt würden.
Ich weiß nicht wie ich nur das erste Zeichen betrachte/ersetze

Vielen Dank schon mal für hoffentlich gute Tipps face-wink

Gruß,

Napperman

Content-ID: 157972

Url: https://administrator.de/contentid/157972

Ausgedruckt am: 25.11.2024 um 05:11 Uhr

dog
dog 04.01.2011 um 12:57:12 Uhr
Goto Top
UPDATE tbl1 SET telnum = CONCAT("+49",SUBSTRING(telnum FROM 2)) WHERE SUBSTRING(telnum,1,1) = "0"  
ungetestet
napperman
napperman 04.01.2011 um 13:46:24 Uhr
Goto Top
Hi Dog,

Kannst Du mir diese interessante Zeile ein wenig erklären? Meine SQL Kenntnisse sind nicht die besten.
telnum bezieht sich auf die Spalte (also Spaltenname)?
tbll ist der Name der Tabelle?
was hat es mit telnum FROM 2 auf sich. Was ist 2?

Danke!!!!
napperman
napperman 04.01.2011 um 13:48:17 Uhr
Goto Top
Außerdem würde dann die Null ja nicht entfernt, richtig?
Biber
Biber 04.01.2011 um 16:50:37 Uhr
Goto Top
Moin napperman,

Zitat von @napperman:
Außerdem würde dann die Null ja nicht entfernt, richtig?

Das ist doch genau das, was dog implizit mit seinem Kommentar "Ungetestet" andeuten wollte:
Verifizieren oder falsifizieren kannst am Schnellsten du diesen Ansatz, denn du hast die passenden Daten.

Wenn du nichts "beschädigen" willst an deinen Daten, dann mach doch vorher einen ungefährlichen SELECT, der den CONCAT/SUBSTRING/WHERE-Firlefanz enthält:
SELECT telnum as telnumJezz, 
        CONCAT('+49', SUBSTRING(telnum FROM 2)) as TelNumSpaeter  
 FROM tbl1
WHERE SUBSTRING(telnum, 1, 1) = '0'  

... dann siehst doch das Was-Wäre-Wenn.
Oder eine Syntaxfehlermeldung - ich habe es auch nicht getestet.

Das "FROM 2" in der SUBSTRING-Funktion bedeutet "vom 2. Zeichen an" und CONCAT() ist neudeutsch für ZUSAMMENBRAT().
Was fehlt dir noch zum Testen?

Grüße
Biber
Logan000
Logan000 04.01.2011 um 16:52:26 Uhr
Goto Top
Moin moin

Zum Nachlesen von CONCAT und SUBSTRING schau mal hier: http://dev.mysql.com/doc/refman/5.1/de/string-functions.html

telnum bezieht sich auf die Spalte (also Spaltenname)?
Ja
tbll ist der Name der Tabelle?
Ja
was hat es mit telnum FROM 2 auf sich. Was ist 2?
Korrekt heist es:
SUBSTRING(telnum FROM 2)  -- liefert den Teilstring des Feldes "telnum" ab dem 2. Zeichen  
Außerdem würde dann die Null ja nicht entfernt, richtig?
Doch, s.o

Gruß L.

/Edit
Und wiedermal zeigt sich: Das schnellste Säugetier ist der Biber!
/Edit
napperman
napperman 04.01.2011 um 17:15:39 Uhr
Goto Top
Danke für die Hilfe, so komme ich dem Problem nun bei face-wink
Das FROM 2 hatte ich nicht verstanden, so fällt natürlich das erste Zeichen weg.