Thomas: aus einem Feld nur ermitteln ob leer oder nicht

Hallo!

Ich habe in einer MySQL-Tabelle u.a. die Spalten id, titel und text. Jetzt möchte ich für eine Übersichtsseite nur die Titel auflisten und die Information, ob jeweils ein text vorhanden ist.
Jetzt könnte ich natürlich einfach titel und text abfragen und prüfen ob text=='' ist. Die Liste kann allerdings sehr lang werden und die Texte können groß sein - und das ganze sollte so effizient wie möglich sein. Ich möchte also möglichst gar nicht erst die Texte zwischenspeichern.
So in dieser Art würde ich mir das Vorstellen:

SELECT id, title, (wenn text!='' dann gib mit true zurück, ansonsten false) AS ist_text_vorhanden FROM Tabelle ...

Gibt's so was?

Danke und 'nen schönen Sonntag noch!
Tommi

  1. Hallo Thomas,

    So in dieser Art würde ich mir das Vorstellen:

    SELECT id, title, (wenn text!='' dann gib mit true zurück, ansonsten false) AS ist_text_vorhanden FROM Tabelle ...

    Gibt's so was?

    Die Kontroll-Fluß-Funktionen von MySQL sollten Dir weiterhelfen.

    Hinweis: Bitte beachte den Unterschied zwischen NULL-Werten und der leeren Zeichenkette.

    Freundliche Grüße

    Vinzenz

    1. Hallo Vinzenz,

      Die Kontroll-Fluß-Funktionen von MySQL sollten Dir weiterhelfen.

      Ja, das ist sehr gut! Also einfach:

      SELECT id, title, IF(text!='',true,false) AS ist_text_vorhanden FROM Tabelle ...

      Danke!
      Tommi

      1. yo,

        '' ist nicht gleich NULL, Vinzenz hat dir nicht umsonst diesen hinweis gegeben.

        Ilja

        1. Hallo!

          '' ist nicht gleich NULL, Vinzenz hat dir nicht umsonst diesen hinweis gegeben.

          Ja, aber in meinem Fall ist das doch richtig so, oder? Wenn das Feld leer ist, ist es doch ''.

          Tommi

          1. Hello,

            '' ist nicht gleich NULL, Vinzenz hat dir nicht umsonst diesen hinweis gegeben.

            Ja, aber in meinem Fall ist das doch richtig so, oder? Wenn das Feld leer ist, ist es doch ''.

            Nicht unbedingt. Das kommt auch darauf an, wie Du es angelegt hast.
            Wenn der Default = '' gesetzt wurde und NULL verboten wurde, kann kein NULL drinstehen, sonst schon.

            Zur Prüfung gibt es die Funktion ifnull()
            http://dev.mysql.com/doc/refman/5.1/en/func-op-summary-ref.html
            http://dev.mysql.com/doc/refman/5.1/en/control-flow-functions.html#function_ifnull

            Harzliche Grüße vom Berg
            http://bergpost.annerschbarrich.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau
            Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)