Ich kenne mich mit den Interna der verschiedenen Delphi Versionen nicht aus. Bzw ist unklar, wie, welches SQLite hier (manuell ggf) eingebunden wird: in der
IDE, EXE?
IIF() scheint jedenfalls innerhalb der SQLite Funktionen relativ neu zu sein. Vielleicht eine Versionsfrage. Ob das diese Auswirkungen hat ist allerdings wiederum fraglich.
Ggf. sind einfach die Besonderheiten von SQLite (Typaffinität) und den "Ausdrucksmöglichkeiten" von IIF() so speziell, dass sie im DBClient nicht perfekt umgesetzt sind. IIF / CASE WHEN kann theoretisch je nach Datenlage unterschiedliche Ergebnistypen produzieren. SQLite selbst ist das dank Typaffinität wahrscheinlich relativ egal, dem DBClient vielleicht weniger. Die Sachlage kann dabei unterschiedlich kompliziert sein, je nach Datentypvermischung, impliziter Konvertierbarkeit und vielleicht auch der Existenz von NULL Werten.
In neuen SQLite Versionen (der letzten Stand Ende Februar 2022) gibt es den Strict Mode, der grundlegend das Verhalten von SQLite und Spaltentypen ändert Richtung "normaler"
DB. Klappt vielleicht besser, hat aber vielleicht auch unerwartete Effekte auf den Bestandscode, jenachdem wie sauber der entwickelt wurde.
Wenn es mit CASE WHEN geht, würde ich es erstmal so lassen und vielleicht mal bei den Client Entwicklern fragen.