PDA

View Full Version : SQL Abfrage



Asti
27-10-09, 16:28
Hallo,

habe hier ein Darstellungsproblem bei Ausführung einer SQL Anweisung.

Bei Ausführung von "SQL Prozeduren" über den Navigator oder bei JDBC / ODBC Zugriff erhalte ich bei einem (bestimmten) numerischen Feld (numeric 2,0, not Null, default 0) eine 0.

Setze ich auf'm greenscreen eine SQL Anweisung ab, erhalte ich für selbes Feld, (selber Satz) "nix", d. h. die Spalte ist in der Anzeige nach Abfrage leer. Wende ich hier ein DIGITS(FELD), ein IFNULL(FELD, 5) oder andere skalare Funktionen an, erhalte ich eine 0.

Woran ist denn hier die Darstellung geknüpft? Ist das konfigurierbar?

Zudem beschäftigt mich der Hilfetext zum "Editcode". Wenn dort steht "keine Nullinhalte", kann man das dann "not null" gleichsetzen? Und woher wird dann ein möglicherweise erforderlicher default Wert angezogen?

Gruß

Asti

UFK
29-10-09, 23:08
Woran ist denn hier die Darstellung geknüpft? Ist das konfigurierbar?

Zudem beschäftigt mich der Hilfetext zum "Editcode". Wenn dort steht "keine Nullinhalte", kann man das dann "not null" gleichsetzen? Und woher wird dann ein möglicherweise erforderlicher default Wert angezogen?
Ob man die Darstellung der Ergebnisse im interaktiven SQL (Greenscreen) konfigurieren kann ? Gute Frage, ich glaube nicht.

Wenn Du die SQL-Abfrage aber in ein QueryManagerQuery (QMQRY) einträgst, und dann mit F13 auf das Report-Layout umschaltest, dann kannst Du zumindest dort die Darstellung etwas genauer steuern.

In jedem Fall geht es IMO nur um die Darstellung, und auch wenn die 0 nicht dargestellt wird, sondern nichts dasteht (Blank), rechnet die iSeries dennoch mit der Zahl 0.

Ich hoffe, daß Du dies alles nicht mit dem SQL-NULL verwechselst, dem Sonderfall, daß in der Datenbank gar nichts gespeichert ist. Mit SQL-NULL (oft dargestellt als '-' oder '~') kann man jedenfalls nicht rechnen. Man darf Felder, die auf SQL-NULL kommen können, jedenfalls nicht unbedarft in Formeln verwenden, sondern muß sich dann erst um einen Ersatzwert kümmen (0 oder 1 oder so)

Fuerchau
30-10-09, 09:35
STRSQL kann den EDTCDE auswerten und eine entsprechende Darstellung wählen.
Der EDTCDE wird aber nur z.B. bei DSPF/PRTF's übernommen, wenn das Feld über REFFLD referenziert wird.

Standard SQL (wie JDBC) kennt das gar nicht.
Da das Feld mit "not NULL" deklariert ist, kann nie eine NULL drinstehen und IFNULL liefert immer den Inhalt.