PDA

View Full Version : SQL IS nOT NULL funktioniert nicht auf V7.1



hs
28-01-14, 20:12
HI,

wir haben auf V5.4 mehrere logische Sichten, die in etwa nach folgendem Schema aufgebaut sind:

select keya, case when feldb not is null then feldb else felda end as feld
from taba left outer join tabb on keya = keyb

Die Abfrage liefert mir auf V5.4 den Inhalt von FELDB (wenn Key in TABB gefunden wurde), aber auf der neuen Anlage mit V7.1 immer NULL.

Ändere ich jetzt die Abfrage wie folgt:

select keya, case when feldb >'' then feldb else felda end as feld
from taba left outer join tabb on keya = keyb

Dann wird mir der Inhalt von FELDB ausgegeben wie zuvor.

An was kann das liegen?

Danke
HS

Fuerchau
28-01-14, 20:21
Normalerweise heißt es:
feld x is null
feld x is not null

alternative ist
coalesce(felda, feldb, ...)

was bedeutet
case when felda is null then feldb else felda end

Prüfe mal die Definition des Quellfeldes, ob überhaupt NULL erlaubt ist (ALWNULL).
Ist das nicht der Fall, kann "is not null" halt nicht zutreffen.

Zu Sicherheit kannst du auch
coalesce(Felda, '') > ''
kodieren, damit gehst du allem aus dem Weg.

V7R1 erlaubt in der Syntax einiges nicht mehr, was in V5R4 (leider) noch erlaubt war.

hs
29-01-14, 08:33
Hallo Fuerchau,
vielen Dank für deine Antwort.

Sorry, mein Fehler. War natürlich 'is not null'

Ob das Feld NULL zulässt oder nicht spielt aber keine Rolle, weil wir mit der Abfrage left outer join die Sätze finden wollen, die in der zweiten Tabelle vorhanden sind. Im Fall, dass kein Datensatz gefunden wird, soll der Wert aus der ersten Tabelle genommen werden.

Natürlich kann man das auch auf andere Art und Weise feststellen, eine davon hatte ich ja bereits genannt.

Jedoch hieße das, mehrere Views ändern und zugehörige Programme wandeln ;-(

Natürlich kann es sein, dass V7.1 solche "Konstruktionen" nicht mehr verzeiht. Wir bringen jetzt aber erst mal den PTF-Stand up to date und dann schaun mer mal...

B.Hauser
29-01-14, 09:11
M.E. sieht das nach PTF aus.
Sofern der aktuelle PTF-Stand keine Änderung bringt, solltes Du einen PMR bei der IBM aufmachen.
Ich hatte gerade gestern von einem anderen Programmierer von dem gleichen Problem gehört.

Birgitta

kitvb1
31-01-14, 11:49
This is an IBM bug. This happens when there is a SELECT/OMIT logical file build over any of the PFs used in the view. IBM could reproduce it after I send them the LF. The latest news just in is that their developers have found 'something' and should be finished next week.