Probleme mit Mysql-Where Klausel
Gerch2003
- datenbank
Hi Leute,
ich habe in meiner Datenbank ein Feld "pic" in dem der Dateiname des Bildes des jeweiligen Eintrages via CMS eingetragen wird.
Standardmäßig steht in dem Feld ein "-" Ich weis nicht warum, aber das hat der Programmierer damals so getan.
Wenn dann via CMS ein Dateiname eingetragen wird sieht das ganze z.B. so aus "-h_001.jpg". Also der "-" bleibt drin stehen.
Jetzt möchte ich mit der SQL-Abfrage, welche mir die Einträge anzeigt, gleich alle Einträge bei denen kein Dateiname eingetragen ist ausfiltern.
$mysql_select = "SELECT * FROM tabelle WHERE (publish='on' AND pic>'1') ORDER BY entry_nr";
Das Feld "pic" in der Tabelle ist VARCHAR(13), also im Endefekt ein normales Textfeld, also sollte man meinen, dass die Abfrage doch funktionieren sollte.
Leider bekomme ich aber immer ein Leeres Resultat zurück.
Grüße
EDIT: Ich habs gelöst ;-)
$mysql_select = "SELECT * FROM tabelle WHERE ((publish='on') AND (CHAR_LENGTH(
pic) > 1)) ORDER BY entry_nr";
CHAR_LENGTH überprüft die Zeichenlänge des Inhaltes.
Mahlzeit Gerch2003,
EDIT: Ich habs gelöst ;-)
$mysql_select = "SELECT * FROM tabelle WHERE ((publish='on') AND (CHAR_LENGTH(
pic) > 1)) ORDER BY entry_nr";
Warum so kompliziert?
Ich hätte ein simples
WHERE publish = 'on' AND pic <> '-'
genommen.
MfG,
EKKi
Ich hätte ein simples
WHERE publish = 'on' AND pic <> '-'
Da hast du Recht. Aber manchmal denke ich bei sowas sowieso immer zu kompliziert.
Wobei ich jetzt nicht denke, dass es für den Server einen so großen Unterschied machen würde?!
Grüße
Hey!
Wobei ich jetzt nicht denke, dass es für den Server einen so großen Unterschied machen würde?!
Nö, aber es sieht schöner und vor allem Übersichtlicher aus ;)
Grüße, Matze
Mahlzeit Matze,
Wobei ich jetzt nicht denke, dass es für den Server einen so großen Unterschied machen würde?!
Nö,
MfG,
EKKi
Hi!
Wobei ich jetzt nicht denke, dass es für den Server einen so großen Unterschied machen würde?!
Beim Programmieren sollte auch im Vordergrund stehen, die Intention rüberzubringen. Sicher, man könnte auch Kommentare schreiben, aber machst du das regelmäßig? Du willst alle Einträge, die nicht "-" sind, also formulier das auch so, denn Einträge mit einer Länge größer 1 passen (bei MySQL) auch auf 65535 andere Situationen. Daraus geht nicht zwangsläufig hervor, dass du eigentlich nur einen ganz speziellen Eintrag der Länge 1 meinst und lässt so Interpretationsspielraum.
Lo!
Mahlzeit Gerch2003,
Wobei ich jetzt nicht denke, dass es für den Server einen so großen Unterschied machen würde?!
Selbstverständlich würde es das! Einerseits sagen beide Statements etwas Unterschiedliches aus (wie dedlfix bereits bemerkte) und andererseits muss in dem einen Fall eine Funktion auf alle vorhandenen Datensätze angewendet werden (damit ihr Rückgabewert mit etwas verglichen werden kann) und in dem anderen Fall wird direkt der jeweilige Spaltenwert auf (Un-)Gleichheit geprüft ... was ist Deiner Meinung nach wohl performanter? :-)
MfG,
EKKi