| 

.NET C# Java Javascript Exception

0
So, ich hab mal wieder ein kniffliges SQL Rätsel... -.-

Ich habe eine Tabelle mit 2 Spalten.
In der 1. Spalte stehen Adressen (Straße Hausnummer) bsp:(Musterstraße 1A)
Die 2. Spalte ist Leer.
In die 2. Spalte sollen die Adressen aus der 1 Zeile rein, nur mit einer anderen Schreibweise bsp:(muster-strasse 1A).

Ich dachte mir, ich mach für jeder Straße nen Update.
Mein Problem sind nur die Hausnummern, denn ich will nicht für jede Adresse sondern nur für jede Straße ein Query schreiben.

Also, wie kann ich die Hausnummer aus der 1. Spalte ans ende der 2. Spalte schreiben?

Edit:
So, nochmal um alle missverständnisse zu vermeiden:
Spalte1 | Spalte2
Musterstraße 1 | null
Musterstraße 2 | null

soll so aussehen:
Spalte1 | Spalte2
Musterstraße 1 | Muster strasse 1
Musterstraße 2 | Muster strasse 2
News:
23.06.2011
DerPunk 1,2k 1 7
DerPunk 1,2k 1 7
Das Beispiel und die Frage ist verwirrend. Meinst Du 1. Zeile oder 1. Spalte? Was meinst Du mit "einer anderen Schreibweise" ? Wie sieht die Tabelle zum Anfang aus und wie soll Sie nach dem Update aussehen?
oopexpert 23.06.2011
Ist denn sicher, dass der Straßenname immer so geschrieben ist? Was ist bei einem Straßenname á la "Am Anger 12". Wie soll da das Ergebnis aussehen?
SensenMannLE 23.06.2011
Ich ging bei meinem Vorschlag (s.u.) davon aus, dass die Updates pro Straße vorgenommen werden sollen, wie in der Frage festgelegt: "..denn ich will nicht für jede Adresse sondern nur für jede Straße ein Query schreiben.

..."
oopexpert 23.06.2011
Ah, nun hab' ich's glaube verstanden. Statement A für "Musterstraße", Statement B für "Am Anger". Das ist aber viel manuelles Doing, außer die Datenmenge ist gering, bzw. die Anzahl der verschiedenen Straßen ist wenig.
Ich persönlich würde mir als Ziel etwas vorstellen, was alles mit einem Statement abdeckt. Da hätte man dann zukünftig auch keine Anpassungen.
SensenMannLE 24.06.2011
Also die Straße Am Anger könnte in der 2. Spalte auch Klaus Peter straße heißen... es geht dabei halt darum, das die straße einen beliebigen anderen namen in der 2. spalte haben soll, nur mit der gleichen hausnummer
DerPunk 24.06.2011
Ok, ich habe mal meine Antwort editiert (s.u.)
SensenMannLE 24.06.2011
3 Antworten
1
update adressen set neueStrasse = 'Muster strasse' || SUBSTR(alteStrasse, LENGTH('Musterstraße'), LENGTH(alteStrasse)) where alteStrasse like 'Musterstraße%';
23.06.2011
oopexpert 455 1 8
1
Hallo,

das musst du dir vermutlich eine Function schreiben.
Weil mit standard-SQl kommst du da nicht ganz ans ziel.
Eine Simple Split Funktion müsste aber schon alles sein was du brauchst.

Wenn du MS SQL verwendest dann kannst du diese Funktion verwenden: http://www.logiclabz.com/sql-server/split-function-in-sql-server-to-break-comma-separated-strings-into-table.aspx

Musst sie nur umbauen, nach leerzeichen splitten und das letzte Element zurückgeben

Im Update kannst du die Werte aus der Funktion und Spalte 2 einfach zusammen fügen.
Guck mal hier: http://uk.answers.yahoo.com/question/index?qid=20090310033152AAzxLYz

Gruß
Michael
23.06.2011
michlG 1,7k 1 5
Danke, aber ich verwende leider Oracle... da is das ihrgendwie nich so einfach...
DerPunk 23.06.2011
Ah ok.. Zu Oracle kann ich dir leider nicht zu sagen, da ich mich damit absolut keine Erfahrung habe
michlG 23.06.2011
1
Hallo,

schau Dir mal hier die Funktionen an (Oracle Regular Expression). Die sollten bei Oracle alle vorhanden sein, und in Abfragen zu verwenden sein.

Mit den Regular Expression Funktionen kannst Du Dir bestimmte Teile eines String entsprechend eines Musters extrahieren, und somit dann für das Update verwenden. Wahrscheinlich am einfachsten, wenn es sich nur um ein Statement handeln soll, mit SubSelects.

Ein fertiges SQL-Statement kann ich Dir leider nicht liefern, da ich kein Oracle in Verwendung habe.

EDIT:
Hier mal ein einfacher RegEx-Ausdruck der eine Hausnummer ermittelt:

(\d+ *\w*)


Achtung: Der Ausdruck deckt folgende Fälle ab: "irgend ein text 123" und "irgend ein text 123 a"

Fall 1 ist der Treffer "123" und in Fall 2 "123 a".

Der Ausdruck funktioniert nicht, wenn du einen folgenden Strassenname hast: "Strasse des 18. Oktober 15"
23.06.2011
SensenMannLE 1,2k 2 9

Stelle deine Sql-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH