Gwindori: MYSQL REGEXP

Hallihallo

Habe folgendes Problem:

Ich habe 2 Tabellen:

  • schueler
  • gruppen

schueler hatte mehrere Felder, unter anderem das Feld GRUPPE varchar

In diesem Feld werden die Indices der Gruppenangegeben, dem der SCHÜLER angehört.
Im Feld GRUPPE werden die Zahlen mit je einem 'a' umgeben abgespeichert, d.h.:

a0aa1aa10a

Die Query sieht dann folgender Maßen aus:

... schueler.gruppe REGEXP 'a'+gruppen.id+'a' ...

Das klappt im Grunde, aber nur so lange bis GRUPPEN.ID noch kleiner 10 ist

Er nimmt den Ausdruck jetzt nicht (beispielsweise) 'a10a'
denn wenn ich das manuell eingebe erhalte ich das gewünscht ergebnis
-> er findet nur 10

Nun wollte ich fragen wie ich das machen kann, dass wenn ich den Wert eines Feldes in den RegAusdruck stecke, mir das richtige Ergebnis heraus kommt!?

(Ich hoffe ich habe mich halbwegs verständlich ausgedrückt)

MfG Christoph

  1. hi,

    schueler hatte mehrere Felder, unter anderem das Feld GRUPPE varchar

    In diesem Feld werden die Indices der Gruppenangegeben, dem der SCHÜLER angehört.
    Im Feld GRUPPE werden die Zahlen mit je einem 'a' umgeben abgespeichert, d.h.:

    a0aa1aa10a

    das sieht nach einem ziemlich verkorksten datendesign aus ...

    warum nutzt du nicht die möglichkeiten, die mysql für solche fälle anbietet? z.b. der datentyp SET würde sich dafür m.E. viel besser eignen, http://dev.mysql.com/doc/mysql/de/SET.html.
    (wenn nicht vllt. sogar eher eine weitere normalisierung anzuraten wäre.)

    Nun wollte ich fragen wie ich das machen kann, dass wenn ich den Wert eines Feldes in den RegAusdruck stecke, mir das richtige Ergebnis heraus kommt!?

    schau dir auf der verlinkten seite an, wie du abfragst, ob ein oder mehrere elemente des SETs im datensatz enthalten sind.

    die jetzige datenstruktur und das rumgehampel mit REGEXP sind ... suboptimal.

    gruß,
    wahsaga

    --
    "Look, that's why there's rules, understand? So that you _think_ before you break 'em."