Oracle select Like auf Spalte anwenden
Markus
- datenbank
0 Cheatah0 Hilker0 Hans0 Matzberger Marcus0 Markus
Hallo!
Habe folgendes Problem.
Ich habe einen Table T1 in dem es Spalte C1 gibt in der Einträge nach folgenden Muster gespeichert sind.
TERRAFRED
RAMEJNEHJ
...
Nun dienen die ersten 3 Buchstaben eines solchen Eintrages also z.B:(TER) als Key auf eine andere Table T2 (ich weiss ist keine gute Lösung aber ich kann an diesen Daten nichts ändern) mit einer COlumn
C2 in der eben genau diese Keys stehen also TER, RAM...
Nun bräuchte ich folgende Abfrage:
select t2.interesting_column from t2 where t2.c2 like(t1.c1)
Nun funktioniert das leider nicht da ich ja bei t1.c1 die % wildcard anhängen muss. Ich weiss aber leider nicht wie hierfür die Syntax ist bzw. ob es so direkt überhaupt funktioniert.
Vielleicht kann mir wer helfen.
mfg, Markus
Hi,
Nun funktioniert das leider nicht da ich ja bei t1.c1 die % wildcard anhängen muss. Ich weiss aber leider nicht wie hierfür die Syntax ist
String-Konkatenation wird über den "||"-Operator durchgeführt. Es existieren aber auch stringbezügliche Funktionen, die einen Teilstring ermitteln können - und funktionsbasierte Indexe.
bzw. ob es so direkt überhaupt funktioniert.
Du solltest Deine absolute Aussage, an der Struktur sei nichts zu ändern, relativieren (lassen). Daten in einer DB-Zelle *sind* atomar. Das Vorhaben ergibt in diesem Universum also keinen Sinn.
Cheatah
Für den "verbund" von zellen kenn ich nur
SELECT col1 ||' - '|| col2 as produkt FROM table
wobei dann sowas wie "col1 - col2" herauskommt...
vielleicht hilft Dir dieses weiter?!
Gruß, der Hilker
Hallo Markus,
select t2.interesting_column from t1, t2 where substr(t1.c1,1,3)=t2.c2;
Gruß
Hans
Hallo!
Habe folgendes Problem.
Ich habe einen Table T1 in dem es Spalte C1 gibt in der Einträge nach folgenden Muster gespeichert sind.
TERRAFRED
RAMEJNEHJ
...
Nun dienen die ersten 3 Buchstaben eines solchen Eintrages also z.B:(TER) als Key auf eine andere Table T2 (ich weiss ist keine gute Lösung aber ich kann an diesen Daten nichts ändern) mit einer COlumn
C2 in der eben genau diese Keys stehen also TER, RAM...Nun bräuchte ich folgende Abfrage:
select t2.interesting_column from t2 where t2.c2 like(t1.c1)
Nun funktioniert das leider nicht da ich ja bei t1.c1 die % wildcard anhängen muss. Ich weiss aber leider nicht wie hierfür die Syntax ist bzw. ob es so direkt überhaupt funktioniert.Vielleicht kann mir wer helfen.
mfg, Markus
Hallo,
Nun dienen die ersten 3 Buchstaben eines solchen Eintrages also z.B:(TER) als Key auf eine andere Table T2 (ich weiss ist keine gute Lösung aber ich kann an diesen Daten nichts ändern) mit einer COlumn
C2 in der eben genau diese Keys stehen also TER, RAM...
Vielleicht geht aber auch
SELECT t2.interesting_column
FROM t2,t1
WHERE t2.c2 = SUBSTR(t1.c1,1,3)
Bei größeren Datenmengen solltest du, wie Cheatah bereits gesagt hat, über entsprechende Indizes nachdenken.
Grüße
Marcus
Danke für die Hilfe!
Die substr Variante funktioniert perfekt für meine Ansprüche