xister
Goto Top

SQL - Telefonnummer optimieren

Hallo zusammen,

ich habe ein kleines Problem und hoffe ihr könnt mir weiterhelfen, da ich in SQL nicht so bewandert bin.

Problem:
Ich habe eine SQL Datenbank mit einigen Telefonnummern, diese wird auch ständig mit neuen Telefonnummern gefüttert, allerdings befinden sich unter den Telefonnummern immer wieder fehlerhafte Nummern.

- keine vorangestellte 0
- Buchstaben in Telefonnummer
- Bindestriche in Telefonnummer

Wäre es möglich, diese Fälle per Update Befehl irgendwie zu aktualisieren.

Fall 1.:
Wenn keine vorangestellte 0, dann setze eine 0 vor die Nummer.

Fall 2:
Wenn Buchstaben in Telefonnummer, dann leere das Feld komplett

Fall 3:
Wenn Bindestrich in Telefonnummer, dann lösche diesen.

So ein Befehl wäre echt klasse.


Beste Grüße
xister

Content-Key: 152921

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

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

Member: Biber
Biber Oct 13, 2010 at 08:31:27 (UTC)
Goto Top
Moin xister,

  • hast du denn eine konkrete Datenbankversion oder möchstest du es eher abstrakt auf der Ebene "eine SQL-Datenbank" beantwortet haben?
  • hast du denn keine Applikation zwischen den Tabellenfeldern und den DAUs, die sich um derlei lästigen Unsinn bei der Erfassung/Anzeige kümmern könnte?

Grüße
Biber
Member: xister
xister Oct 13, 2010 at 08:37:57 (UTC)
Goto Top
Hallo Biber,

sorry, habe ich doch glatt vergessen zu erwähnen.

Es handelt sich um eine MS sqlexpress Datenbank (SQLServer 2008 R2).
Die Applikation ist eine Call-Center Software die allerdings automatisch mit den Daten des Auftraggebers gefüttert wird, somit also schnell fehlerhafte Daten ins System gespielt werden, wenn diese fehlerhaft eingetragen wurden.

Achja, bei den Feldern kann man diese wie folgt nennen:
Telefon1, Telefon2, Telefon3

Also es gibt insgesamt mehrere Felder für Telefonnummern, aber das lässt sich ja anschließend dann beliebig erweitern.

Verdammt ärgerlich, denn die Software zum antelefonieren kann natürlich mit solchen Nummern ohne vorangestellte 0 herzlich wenig anfangen und wählt somit Nummern aus dem Ortsnetz an face-smile

Ich hoffe ich konnte deine Fragen beantworten face-smile

Grüße
Member: maretz
maretz Oct 13, 2010 at 08:58:06 (UTC)
Goto Top
naja - hast du mal z.B. bei SQL nach "Replace" geguckt? Das wär ja schonmal ne maßnahme...

und ggf. geht auch sowas

update xyz set telefon = concat(0,telefon) where telefon NOT LIKE "0%";

Damit wäre dann nur noch das mit den Buchstaben nen Problem... Da wäre zu überlegen zu gucken wieviele Einträge das überhaupt betrifft - ob sich da nen Programm für lohnt oder nicht...
Member: xister
xister Oct 13, 2010 at 12:38:57 (UTC)
Goto Top
Leider funktioniert die concat Funktion nicht unter dem SQL Server. face-sad
Member: soReal
soReal Sep 05, 2012 at 17:20:47 (UTC)
Goto Top
Fall 1.:
Wenn keine vorangestellte 0, dann setze eine 0 vor die Nummer.

update [YourTable]
set telefon1 = '0' + telefon1
where telefon1 not like '0%'

Fall 2:
Wenn Buchstaben in Telefonnummer, dann leere das Feld komplett


update [YourTable]
set telefon1 = ''
where telefon1 like '%[a-z][A-Z]%'


Fall 3:
Wenn Bindestrich in Telefonnummer, dann lösche diesen.

update [YourTable]
set telefon1 = replace(telefon1,'-','')
where telefon1 like '%-%'
Member: Biber
Biber Sep 06, 2012 at 19:53:04 (UTC)
Goto Top
Moin soReal,

kann sein, dass xister nicht mehr mitliest oder nach nunmehr 2 Jahren schon einen anderen Weg gefunden hat.

Aber ich denke, dieser Beitrag ist mit deiner Antwort auf jeden Fall "gelöst".

So habe ihn auch eben markiert.

Danke
Biber