Seite 1 von 1

SELECT und NIL Rückgabe [ERLEDIGT]

Verfasst: Do, 16. Jul 2020 8:20
von Manfred
ich weiß nicht, ob es ein SQL Problem oder ein ADS Problem ist, aber ich habe festgestellt, bei einem SELECT auf ein leeres DAtumsfeld, wird NIL zurückgeliefert. Was mache ich dann, geht das schon über den SELECT Befehl, oder muß man das nachher im Programm weiter behandeln? Oder ist es ein Treiberproblem für die SQL Datenbank als solche?

Re: SELECT und NIL Rückgabe

Verfasst: Do, 16. Jul 2020 8:47
von Marcus Herz
In SQL ist ein leeres Datum immer NULL.
Ich glaub, du arbeitest mit der ADSDBE, da sollte die Einstellung
SET NULLVALUE = false
dann ein leeres Datum zurückgeben, hab das aber nie überprüft

PS: Ich glaub mich zu errinnern, in Oracle war es 31.12.1899

Re: SELECT und NIL Rückgabe

Verfasst: Mo, 27. Jul 2020 15:51
von Manfred
finde ich nichts zu. Was soll das bringen? Es gilt übrigens für alle Felder, in denen kein Wert steht. Character ohne Text liefern auch NIL zurück

Re: SELECT und NIL Rückgabe

Verfasst: Mo, 27. Jul 2020 16:11
von Marcus Herz
War ich zu ungenau:
Ein leeres Datum ist unter SQL immer ein Problem. Bei ADS ist es NULL.
Wenn auch Zeichenfelder NULL sind, hat das SQL Ergebnis keine Zeilen (EOF), oder die Zeichenfelder sind nie mit BLANK gefüllt worden.
In INSERT ohne explizite Zuweisung auf irgendein Feld, dann bleibt es NULL. Egal, ob numerisch, logisch, Datum oder Zeichen. Numerische NULL Felder können nicht addiert oder ä. werden!

Ein einem ADD kann man aber jeder Spalten einen DEFAULT Wert zuweisen, mit dem dann das Feld gefüllt wird, wenn ein UPDATE NULL erzeugt.

Re: SELECT und NIL Rückgabe

Verfasst: Mo, 27. Jul 2020 17:19
von Manfred
Nein, Du warst nicht zu ungenau.
Aber ich muß mich erstmal an eine andere Technik gewöhnen. Die Spalte wurde mit Alter table angelegt. Da hätte ich schon einen Default Wert setzen müssen. Das habe ich aber nicht getan, weil ich so weit nicht gedacht hatte. Ich mache jetzt ein Add Column default '' und es sieht schon viel besser aus.

Re: SELECT und NIL Rückgabe [ERLEDIGT]

Verfasst: Mo, 27. Jul 2020 20:41
von Marcus Herz
Dann musst du aber immer noch alle existierenden Datensätze mit dem Default updaten!

Re: SELECT und NIL Rückgabe [ERLEDIGT]

Verfasst: Mo, 27. Jul 2020 21:02
von Manfred
ich habe es ausprobiert:

Code: Alles auswählen

ALTER ONLINE TABLE FAHRZEUGE  ADD testlog logical default 'false' position 2
das erfüllt alles. Entsprechende für numerische, character auch.

Re: SELECT und NIL Rückgabe [ERLEDIGT]

Verfasst: Di, 28. Jul 2020 11:36
von Marcus Herz
bevor ein Missverständnis entsteht:
Dieser DEFAULT Wert gilt nur für Neuanlagen ab dem Zeitpunkt der Änderung

Re: SELECT und NIL Rückgabe [ERLEDIGT]

Verfasst: Di, 28. Jul 2020 11:54
von Manfred
und das bedeutet genau?

Re: SELECT und NIL Rückgabe [ERLEDIGT]

Verfasst: Di, 28. Jul 2020 11:56
von HaPe
und das bedeutet genau?
Dass du dich selbst um vorhandene leere Datenfelder kümmern musst.

Re: SELECT und NIL Rückgabe [ERLEDIGT]

Verfasst: Di, 28. Jul 2020 12:03
von Manfred
ach so. Das muß ich doch sowieso. Es ging mir nur darum, das es keine NIL Werte sind, sondern die Werte, die in normalen DBF gesetzt werden, wenn die Spalten neu eingefügt werden. Mehr nicht.