Frank Stabenau: Richtige Syntax für MySQL abfrage mit REGEXP

Hallo Leute,

ich möchte folgendes abfragen.

mysql> select * from tabelle where '30423' regexp plz

In der Tabelle stehen in der Spalte PLZ zB. '3', '30', '04'.

Jetzt möchte ich das '3' oder '30' selected werden, aber nicht '04'.
Also sollte er ja nur den Anfang der Zeichenkette als Suchmuster benutzen.
Wie bekomme ich ein ^ mit eingebaut, so das die Syntax stimmt?

Danke schonmal,
VG Frank

  1. Hi,

    mysql> select * from tabelle where '30423' regexp plz

    In der Tabelle stehen in der Spalte PLZ zB. '3', '30', '04'.

    Jetzt möchte ich das '3' oder '30' selected werden, aber nicht '04'.
    Also sollte er ja nur den Anfang der Zeichenkette als Suchmuster benutzen.
    Wie bekomme ich ein ^ mit eingebaut, so das die Syntax stimmt?

    Wenn ich dich richtig verstanden habe suchst du:
    select * from tabelle where PLZ like '3%';

    Das % steht hierbei fuer beliebige Zeichen.

    mfG,
    steckl

  2. Hi Frank!

    mysql> select * from tabelle where '30423' regexp plz
    In der Tabelle stehen in der Spalte PLZ zB. '3', '30', '04'.

    Kann es sein, dass du nur die erste Ziffer der PLZ vergleichen möchtest?
    Wie wäre es mit einem where 3% LIKE plz?

    Ansonsten hilft dir vielleicht das Handbuch weiter.

    MfG H☼psel

    --
    "It's amazing I won. I was running against peace, prosperity, and incumbency."
    George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
    Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
    1. Hallo und Danke schonmal für die Antworten.

      Eigentlich suche ich nicht nach einer anderen Lösung.
      Ich suche vor allem erst einmal nach der richtigen Syntax für mein Problem.
      Ich hätte gern das:

      mysql> SELECT 'fofo' REGEXP '^fo';

      umgesetzt.

      Nur hole ich mir den Teil nach dem REGEXP aus der DB, wobei ich nach Abfrage eines Formulars 'fofo' vorgegeben wird.

      Also habe ich dann:

      mysql> SELECT '30425' REGEXP PLZ;

      Meine falsche Syntax sieht so aus:

      mysql> SELECT '30425' REGEXP ^PLZ;

      Und ich hätte gern gewusst, wie man das richtig schreibt.
      Oder halt eben die Antwort, dass es nicht geht. Dann suche ich nach einer anderen Lösung.

      Ich hoffe ich habe mich nicht zu kompliziert ausgedrückt!

      VG Frank

      1. Hi,

        Meine falsche Syntax sieht so aus:

        mysql> SELECT '30425' REGEXP ^PLZ;

        versuch mal:
        SELECT '30425' REGEXP CONCAT('^',PLZ);

        mfG,
        steckl

        1. mysql> SELECT '30425' REGEXP ^PLZ;
          versuch mal:
          SELECT '30425' REGEXP CONCAT('^',PLZ);

          Vielen Dank, das ist die Lösung!

          VG Frank