Unterscheidung Null und ''/0 deaktivierbar?

Hallo!

Seit dem Wechsel vom AM14 auf AM18 sind unsere Filterausdrücke um ein Vielfaches komplexer geworden, da wir „NICHT Beginnt mit…“, „NICHT Enthält…“ usw. immer via „ODER“ mit der Bedingung verknüpfen müssen, dass ein Feld auch auf Null stehen kann.

Ich verstehe, dass es auf Datenbank-Ebene ein klarer Unterschied ist, ob ein Feld auf Null oder „Leerer String“ bzw. 0 steht - aus Anwendersicht kommt dies jedoch aufs gleiche raus und sollte zumindest aus dieser Sicht auch gleich behandelt werden. Deshalb wollte ich fragen, ob es eine Möglichkeit gibt, auf Programm- oder DB-Ebene (MS SQL Express 2014) einzustellen, dass bei Filtern o.ä. diese Unterscheidung nicht mehr vorgenommen wird?

Mit freundlichen Grüßen

Christian Schmitt

Hi Christian,

die kannst im Enterprise Management Studio für jedes Feld einen „Standardwert“ angeben (Rechtsklick auf die Tabelle > „Entwerfen“).

Hier würdest du für Zeichenfelder ‚‘ (zwei einfache Anführungszeichen hintereinander) angeben. Für andere Feldtypen wird schon schwieriger klar zu entscheiden, was die Alternative zu „NULL“ (=„kein Wert“/„weiß nicht“) sein soll: Bei Numerischen Feldern, könntest du als Standardwert 0 eintragen. Aber bei Datumsfeldern??? Bei logischen Feldern evtl. false. Das kann allerdings ein Problem werden, falls das Feld „PrüfungBestanden“ heißt, weil „Prüfung nicht bestanden“ (false) und „Prüfung noch gar nicht versucht“ (NULL) ja zwei unterschiedliche Dinge sind, und wenn du NULL jetzt ausschließt, ja die Aussage irreführend wird.

In jedem Fall kannst du es über so eine Vorbelegung lösen, weil das den NULL-Inhalt von vorneherein verhindert. Deine bestehenden Datensätze musst du dann natürlich einmal auf den aktuellen (nicht-NULL) Stand bringen - das macht halt u.U. etwas Arbeit :frowning:

Gruß

Alex

Hi Alex,

das hört sich nach einer guten Lösung an! Denke, dass ich die von dir beschriebene „Nicht-Null“ Option samt entsprechender Default-Werte für ausgewählte nvarchar-Felder setzen werde. Für diese Felder hatte ich mir zwischenzeitlich schon ein kurzes SQL-Skript geschrieben, das dort Null-Werte durch ‚‘ ersetzt. Hatte zuerst Bedenkten wegen Performance/Speicherbedarf, aber zumindest laut dieser Quelle scheint das unproblematisch zu sein.

Vielen Dank für die ausführliche Antwort!

VG

Christian