Markus : Oracle select Like auf Spalte anwenden

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

  1. 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

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
  2. 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

  3. 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

  4. 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

    --
    Wenn der Weg das Ziel ist, ist das Ziel dann weg?
    1. Danke für die Hilfe!

      Die substr Variante funktioniert perfekt für meine Ansprüche