Bedingung einer Query
Henrik
- php
0 Miraldo0 Andi Meran0 kerki- datenbank
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
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
Hallo Hendrik
schau dir die LIKE Funktion von SQL an
zb:
...WHERE tabelle LIKE 'drei_zeichen%' .....
Andi
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
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
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
Hi Kerki,
BINGO! Herzlichen Dank, es funzt!
Grüße, Henrik