Probleme mit CASE WHEN bei unterschiedlichen Feldinhalten

07/09/2009 - 19:29 von Patrick Pohlmann | Report spam
Hallo Zusammen,

ich möchte gerne Rufnummern in einer Datenbank angleichen. Ich habe da also
eine Spalte in denen stehen folgende Werte:

4930123456
030123456
004930123456
030123XXX
ODER IRGENDEIN TEXT

Ich möchte nun gerne folgende Daten da drin stehen haben:

4930123456
4930123456
4930123456
4930123XXX
ODER IRGENDEIN TEXT

Ich habe das schon mit CASE WHEN Funktionen versucht, bekomme aber immer
Probleme beim Umwandeln von Datentypen. Bin - vielleicht auch weil es spàt
ist - ratlos.

Kann mir jemand helfen?

Vielen Dank und viele Grüße

Patrick
 

Lesen sie die antworten

#1 Elmar Boye
07/09/2009 - 20:34 | Warnen spam
Hallo Patrick,

Patrick Pohlmann schrieb:
ich möchte gerne Rufnummern in einer Datenbank angleichen. Ich habe da
also eine Spalte in denen stehen folgende Werte:

4930123456
030123456
004930123456
030123XXX
ODER IRGENDEIN TEXT

Ich möchte nun gerne folgende Daten da drin stehen haben:

4930123456
4930123456
4930123456
4930123XXX
ODER IRGENDEIN TEXT

Ich habe das schon mit CASE WHEN Funktionen versucht, bekomme aber immer
Probleme beim Umwandeln von Datentypen. Bin - vielleicht auch weil es
spàt ist - ratlos.



Umwandeln brauchst/solltest Du da gar nichts, das sollten Zeichenketten bleiben.

Beachten mußt Du vor allem, dass CASE von oben nach unten ausgewertet wird,
der erste Treffer kommt also zum Zuge.

Für die obigen Werte ein Versuch wàre das untenstehende - ohne jedes Gewehr ;-)
Wobei man dabei beim Experimentieren zunàchst mit einer neuen Spalte
oder gar Tabelle arbeiten sollte.
Denn meist gibt es dabei einige Überraschungen mehr.

DROP TABLE Tabelle
GO
CREATE TABLE Tabelle (
Telefonnummer varchar(20),
TelefonnummerNeu varchar(20) )

INSERT INTO Tabelle (Telefonnummer) VALUES ('4930123456')
INSERT INTO Tabelle (Telefonnummer) VALUES ('030123456')
INSERT INTO Tabelle (Telefonnummer) VALUES ('004930123456')
INSERT INTO Tabelle (Telefonnummer) VALUES ('030123XXX')
INSERT INTO Tabelle (Telefonnummer) VALUES ('ODER IRGENDEIN TEXT ')
INSERT INTO Tabelle (Telefonnummer) VALUES (NULL)
INSERT INTO Tabelle (Telefonnummer) VALUES ('1')
GO

UPDATE Tabelle
SET TelefonnummerNeu = CASE
WHEN LEFT(Telefonnummer, 2) = '49'
THEN Telefonnummer
WHEN LEFT(Telefonnummer, 2) = '00' AND LEN(Telefonnummer) > 2
THEN '49' + RIGHT(Telefonnummer, LEN(Telefonnummer) - 2)
WHEN LEFT(Telefonnummer, 1) = '0' AND LEN(Telefonnummer) > 1
THEN '49' + RIGHT(Telefonnummer, LEN(Telefonnummer) - 1)
ELSE Telefonnummer END
GO
SELECT * FROM Tabelle
GO

Ähnliche fragen