Frage zu SQLite und SELECT auf NULL
-
Hi. Habe eine Spalte die ist NULL, trag mit INSERT etwas ein und lösche das wieder mit
..SET Spalte=''
Jetzt möchte ich prüfen, ob die Spalte leer ist und sage wie in mysql
..WHERE Spalte=''
aber erhalte kein Ergebnis. Mach ich
..WHERE Spalte IS NULL
dann bekomme ich Ergebnis.
Kann mir jemand sagen warum Spalte='' nicht funktioniert?
-
SQLite ist etwas seltsam. Ich sage
WHERE ChangeFlag=2 AND (Position IS NOT NULL AND Position>0)
und ich erhalte trotzdem Position zurück die keinen Inhalt hat.
WHERE ChangeFlag=2 AND LENGTH(Position)>0
Löst wohl endlich das Problem. SQlite ist da etwas sehr benutzerunfreundlich, oder gibts Grund für das?
-
miep schrieb:
Kann mir jemand sagen warum Spalte='' nicht funktioniert?
Weil ein Leerstring kein Nullwert ist. Google mal nach dreiwertiger Logik.
Oder habe ich Deine Frage nicht verstanden?
-
Denke er kat ein anderes Problem.
Scheinbar macht SQLLite aus einem Leerstring ein NULL.
MySQL und MSSQL machen das z.B. nicht.NULL != ''
-
Oracle macht das auch.
-
Die drei Buchstaben von 'SQL'ite können täuschen, denn nach eigener Aussage des SQLite-Projekts sind sie keine vollständige SQL92-Implementierung !
Es gibt viele böse Fallstricke bei SQLite, insbesondere wenn man komplexere Statements benutzt.
Dennoch frage ich mich, ob du überhaupt mal in die Doku von SQLite geschaut hast?!?
-
miep schrieb:
Hi. Habe eine Spalte die ist NULL, trag mit INSERT etwas ein und lösche das wieder mit
..SET Spalte=''
Jetzt möchte ich prüfen, ob die Spalte leer ist und sage wie in mysql
..WHERE Spalte=''
aber erhalte kein Ergebnis. ...
Leere Zeichenfolgen werden überall anders interpretiert. Lösche einfach mit SET SPALTE = NULL und prüfe mit WHERE SPALTE IS NULL.