Bedingung: IF (ISNULL != ' ' <-> IF(ISNOTNULL = ' '. WIE ?

querytail

Erfahrenes Mitglied
Hallo und guten Abend,

ich habe folgendes Problem: Die folgende Abfrage muss so gestaltet werden, dass bei leerem Datenbankfeld ein UNGLEICH benötigt wird und bei einem Eintrag ein GLEICH.

So wie folgt funktioniert es, allerdings nur so, dass wenn leer empty benutzt wird, ansonsten der Eintrag.

Code:
...AND IF(ISNULL(myset.state),'empty',myset.state) != '".$title."'

Jetzt soll aber, wenn ein Eintrag in myset.state vorhanden ist = '".$title."' benutzt werden statt !=

Wie macht man sowas?

Danke

querytail
 
MySQL?

SQL:
IF(ISNULL(myset.state),'empty',myset.state)
-- kann man ersetzen durch
IFNULL(myset.state, 'empty)

Irgendwie macht deine Anforderung keinen Sinn.
Bei NULL willst du das folgende vergleichen
$title != NULL

Bei einem Wert
$title=value

Also darf $title nie Null sein. Wenn state NULL ist willst du keinen wirklichen Vergleich machen, bei einem Wert soll verglichen werden.
Das ergibt alle Zeilen mit bei denen Der Wert übereinstimmt oder kein Wert vorhanden ist

So kann man das lösen
SQL:
.. AND ISNULL(NULLIF(myset.state, '{$title}'))

Gibt die folgenden Werte zurück
SQL:
ISNULL(NULLIF('value', 'value'))
-- gibt True zurück, da Beide Werte gleich sind wird aus dem NULLIF() NULL
-- und ISNULL() macht daraus true

ISNULL(NULLIF('value', 'index'))
-- gibt false zurück, da die beiden Werte unterschiedlich sind wird aus dem NULLIF()
-- 'value' und ISNULL() macht daraus false

ISNULL(NULLIF(NULL, 'index'))
-- gibt true zurück, da die beiden Werte unterschiedlich sind wird aus dem NULLIF() 
-- NULL (Der erste Wert) und ISNULL() macht daraus true
 
Zuletzt bearbeitet von einem Moderator:
Zurück