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?!?

    http://www.sqlite.org/nulls.html



  • 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.


Anmelden zum Antworten