Announcement

Collapse
No announcement yet.

Viele Werte auf NULL prüfen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Viele Werte auf NULL prüfen

    Hallo

    Wie mir schon toll in einem anderen Beitrag geholfen wurde, möchte ich hierzu nochmal etwas nachfragen:
    Code:
    CASE
                WHEN Other.Name IS NULL THEN
                  en.name
                ELSE
                  Other.Name
              End     AS Name
    Soweit klar.

    Aber wenn ich nun viele der Werte prüfen möchte, führt kein Weg vorbei diese in jeweils in einer eigenen Abfrage zu schreiben, oder?
    Beispiel:
    Code:
    CASE
                WHEN Other.Name IS NULL THEN
                  en.name
                ELSE
                  Other.Name
              End     AS Name
    CASE
                WHEN Other.Name IS NULL THEN
                  en.name1
                ELSE
                  Other.Name1
              End     AS Name1
    CASE
                WHEN Other.Name IS NULL THEN
                  en.name2
                ELSE
                  Other.Name2
              End     AS Name2
    CASE
                WHEN Other.Name IS NULL THEN
                  en.name3
                ELSE
                  Other.Name3
              End     AS Name3
    Danke!

  • #2
    Das Case Statement für SQL liefert im Ergebnis den Wert einer Spalte. Es bietet sich vor allem an, meherere Unterschiedliche Fälle zu einem Ergebnis zusammenzufassen.
    Im Sonderfall Prüfung auf Null, kann der Übersichtlichkeit halber die Funktion IFNULL verwendet werden.
    Gruß, defo

    Comment


    • #3
      Hallo,
      Originally posted by defo View Post
      Im Sonderfall Prüfung auf Null, kann der Übersichtlichkeit halber die Funktion IFNULL verwendet werden.
      Das ist prinzipiell richtig, für das konkrete Beispiel aber nicht anwendbar. IFNULL hat nur zwei Parameter! Der Erste ist der auf NULL zu prüfende Ausdruck und der Zweite der Ausdruck, der ausgewertet wird, wenn der erste NULL ist. Für den "ELSE-Fall" gibt es KEINEN expliziten Parameter, dort wird immer der erste Parameter verwendet.
      Ein [highlight=sql]
      CASE
      WHEN Other.Name IS NULL THEN
      en.name2
      ELSE
      Other.Name2
      End AS Name2
      [/highlight]lässt sich also mit IFNULL NICHT nachbauen. Hier wäre maximal die Funktion IF anwendbar.
      [highlight=sql]
      IF(Other.Name IS NULL, en.name2, Other.Name2) AS Name2
      [/highlight]

      Gruß Falk
      Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

      Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

      Comment


      • #4
        Oh, da hab ich nicht richtig hingeschaut, Du hast Recht!
        Ich habe vielleicht eine Wahrnehmungsstörung bekommen, weil das sich wiederholende Case Konstrukt mit wiederkehrend gleichem Feld als Eingangsparameter und verschiedensten "Ersatz"feldern etwas seltsam ist.
        Gruß, defo

        Comment


        • #5
          Originally posted by defo View Post
          ...Ich habe vielleicht eine Wahrnehmungsstörung bekommen, weil das sich wiederholende Case Konstrukt mit wiederkehrend gleichem Feld als Eingangsparameter und verschiedensten "Ersatz"feldern etwas seltsam ist.
          Ich hab auch mehrmals hinsehen müssen, bevor ich die Unterschiede der einzelnen Ausdrücke erkannt habe
          Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

          Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

          Comment


          • #6
            Hallo Ihr beiden

            Habt vielen Dank! Die IF ist etwas übersichtlicher als der CASE.

            Comment

            Working...
            X