Einzelnen Beitrag anzeigen

jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#18

AW: SQLITE ifnull komisches verhalten

  Alt 15. Mär 2017, 15:41
Danke, der Denkanstoß fehlte mir! Durch das Ändern von
Code:
.. where ..'1' = '1'..
funktioniert das auch!

(mich wundert es nur, dass da kein Fehler ausgeworfen wurde und der die Abfrage einfach ausgeführt hat, aber vielleicht bin ich da auch einfach vom MSSQL Managementstudio verwöhnt)
Siehe mein Post #2.
SQLite ist nicht pingelig mit Typen.
Der Typ des Ausdrucks "ifnull(<feld>,1)" ist (mir) erstmal unbekannt.
Genaugenommen wohl auch sqlite, da die Funktion verschiedenste Spaltentypen als Eingangsparameter schluckt.
Um sicherzugehen, dass ein Vergleich mit festem Typ funktioniert, muss man die gewünschten Typen auch gesichert herbeiführen. Also Cast oder sowas. Hast Du gemacht mit Anführungszeichen. (Ich wäre mir übrigens nicht sicher, dass Deine Methode hinreichend sicher ist)
Mein Vorschlag, am anderen Ende des "=" die gleiche Funktion einzusetzen, nur mit fixen Parametern, war ein erster Wurf, um Dich auf das Problem aufmerksam zu machen.

P.S.: Auch in anderen RDBMS gibt es solche Funktionen, deren Ausgabetyp notgedrungen (oder eleganter Weise) variieren kann. Das wird dynamisch zum Zeitpunkt des Aufrufs bestimmt und ist idR auch dokumentiert, wie die Funktionen das machen.
Also an der Ecke schadet es nie, 2x hinzusehen.
Gruß, Jo
  Mit Zitat antworten Zitat