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-Key: 157972

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

Printed on: April 18, 2024 at 20:04 o'clock

Member: dog
dog Jan 04, 2011 at 11:57:12 (UTC)
Goto Top
UPDATE tbl1 SET telnum = CONCAT("+49",SUBSTRING(telnum FROM 2)) WHERE SUBSTRING(telnum,1,1) = "0"  
ungetestet
Member: napperman
napperman Jan 04, 2011 at 12:46:24 (UTC)
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!!!!
Member: napperman
napperman Jan 04, 2011 at 12:48:17 (UTC)
Goto Top
Außerdem würde dann die Null ja nicht entfernt, richtig?
Member: Biber
Biber Jan 04, 2011 at 15:50:37 (UTC)
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
Member: Logan000
Logan000 Jan 04, 2011 at 15:52:26 (UTC)
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
Member: napperman
napperman Jan 04, 2011 at 16:15:39 (UTC)
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.