Oracle: Select gibt unter 2 Where bedingungen keine Daten aus

Gray

Erfahrenes Mitglied
Code:
Code:
"SELECT * FROM GN_EINSTELLUNGEN WHERE FELD = 'serverstatus' AND WERT != ''"

Das müsste eigentlich mir 2 ergebnisse geben, da es 2 mal Einen Datensatz gibt der als Feld serverstatus hat und bei beiden ist unter WERT etwas eingetragen.

Das folgende funktioniert, gibt mir aber ebend immer Daten aus:
Code:
"SELECT * FROM GN_EINSTELLUNGEN WHERE FELD = 'serverstatus'"

Ich möchte aber nur eine Ausgabe erhalten wenn in der Spalte FELD serverstatius steht und die Spalte WERT nicht leer ist.
 
probier es mal so:

Code:
SELECT * FROM GN_EINSTELLUNGEN WHERE FELD = 'serverstatus' AND ISNULL(WERT,'') != ''

vielleicht sind die leeren werte ja NULL und nicht ''
 
thx
klappt aber leider nicht:

Code:
Warning: ociexecute() [function.ociexecute]: ORA-00904: "ISNULL": invalid identifier
 
Hab es rausgefunden, ist doch so simpel das man nicht drauf kommt:

Code:
SELECT * FROM GN_EINSTELLUNGEN WHERE FELD = 'serverstatus' AND WERT IS NOT NULL
 
Ja stimmt ISNULL gibt es bei Oracle nicht - weiß auch nicht ob es eine Ersatzfunktion gibt.

Mit deiner jetzigen Abfrage würdest du halt etwaige Werte die nun wirklich '' sind nicht mit einschließen.
 
Unter Oracle gibt es keine leere Zeichenfolge, d.h. ein '' ist immer NULL. Wenn ein Feld als NOT NULL deklariert ist, kann auch keine leere Zeichenfolge eingetragen werden:

SQL:
TEST @mydev> create table test( feld varchar2(10) );

Tabelle wurde erstellt.

TEST @mydev> insert into test values ( '' );

1 Zeile wurde erstellt.

TEST @mydev> select * from test where feld is null;

FELD
----------


1 Zeile wurde ausgewählt.

TEST @mydev> select * from test where feld = '';

Es wurden keine Zeilen ausgewählt

TEST @mydev> delete from test;

1 Zeile wurde gelöscht.

TEST @mydev> alter table test modify feld not null;

Tabelle wurde geändert.

TEST @mydev> insert into test values ('');
insert into test values ('')
                          *
FEHLER in Zeile 1:
ORA-01400: cannot insert NULL into ("TEST"."TEST"."FELD")
 
Zuletzt bearbeitet von einem Moderator:
Zurück