Henrik: Bedingung einer Query

Morgen zusammen,

ich möchte mit einer query ein Feld darauf überprüfen, ob der Feldinhalt mit einer ganz bestimmten Sequenz von 3 Zeichen beginnt. Da der Feldinhalt jedoch IMMER > 3 Zeichen ist, geht es ja nicht per

WHERE feld != $variable

da der Feldinhalt exakt dieser Sequenz entsprechen müsste. Wie kann ich quasi

substr($variable, 0,3)

in meine Bedingung reinformulieren?

Vielen Dank für enen Augen öffnenden Tipp,

Grüße von Henrik

  1. Hallo Henrik

    häng ein '%' and die variable dran

    wenn du zb. nach 'abt%' suchst kriegst du alles was mit abt anfängt.

    Grüsse
    Miraldo

  2. Hallo Hendrik

    schau dir die LIKE Funktion von SQL an
    zb:
    ...WHERE tabelle LIKE 'drei_zeichen%' .....

    Andi

  3. Hallo !

    Ich rate 'mal es geht die um ein SQL-Statement? ;-)

    Neben der Variante mit LIKE steht dir durchaus auch eine Teilstring-Funktion zur Verfügung, nur heißt diese nicht SUBSTR(A, B, C) sondern SUBSTRING().

    Knapp daneben ist auch vorbei!

    Wenn es nur um den Feldanfang geht, dürfte aber die Funktion LEFT() reichen.

    Gruß,
    kerki

    1. Hi Kerki,

      das mit SUBSTRING() und LEFT() müsste passen. Nur ignoriert meine query diese Vorgabe.

      mysql_query("SELECT feld FROM tabelle WHERE LEFT('feld',3) != "$zeichenfolge" [...]");

      listet ALLES, ob $zeichenfolge enthalten ist oder nicht :-(

      Oder hab' ich das grundsätzlich falsch verstanden?

      Grüße, Henrik

      1. Hallo Henrik!

        Zwei Dinge sind mir bei deinem Statement aufgefallen:

        mysql_query("SELECT feld FROM tabelle WHERE LEFT('feld',3) != "$zeichenfolge" [...]");

        1. != :
           heißt soviel wie ungleich. Wolltest du das?

        2. left('feld',3):
           liefert als Ergebnis 'fel', nicht etwa die ersten 3 Buchstaben des Datenfeldes. Lass die Hochkommata weg!

        Dein Statement heißt also soviel wie:
        "Zeige mir alle Datensätze, außer wenn der Suchbegriff 'fel' heisst!" :-)

        Das folgende SQL-Statement müsste klappen:

        SELECT feld
            FROM   tabelle
            WHERE  LEFT(feld,3)=$zeichenfolge

        Ich hoffe, das war es jetzt.

        Gruß,
        kerki

        1. Hi Kerki,

          BINGO! Herzlichen Dank, es funzt!

          Grüße, Henrik