これは奇妙なものです:
NOT NULLS
SQLiteからフィルタリングすることはできますが、できませんNULLS
:
これは機能します:
SELECT * FROM project WHERE parent_id NOT NULL;
これらはしません:
SELECT * FROM project WHERE parent_id IS NULL;
SELECT * FROM project WHERE parent_id ISNULL;
SELECT * FROM project WHERE parent_id NULL;
すべての返品:
クエリの構文に問題があります(クエリは実行されませんでした)...
更新:
私はこれをPHPで行っています-ezSQlを使用したコードと、PHPLiteAdminインターフェイスを使用しています
PHPLiteAdminデモを使用すると、この式は機能します。これで、PHPのSQLiteのバージョンの問題が疑われますか?それでいいの?この表現はいつも有効ではなかったのですか?
更新2:
ezSQLを使用してPHPからコードを実行すると、PHPの警告は次のようになります。
PHP警告:SQLロジックエラーまたはデータベースがありません
PHPからより多くの情報を取得する方法はありますか?これは、特にCLIの同じステートメントが正常に機能するため、非常に不透明で奇妙です...
更新3
私が持っている他の唯一の考えられる手がかりは、PHPで作成したデータベースをCLIで読み取ることができないこと、およびその逆であるということです。私は得る:
エラー:ファイルが暗号化されているか、データベースではありません
したがって、ここには間違いなく2つのSQliteフレーバーがあります。(これを参照してください)それでも、なぜ無効なステートメント??
更新4
理由ではないにしても、問題の原因を突き止めたと思います。PHPezSQLで作成したDBは、ISNULLステートメントが失敗するDBです。PHPのSQLite3クラスを使用してDBを作成すると、ステートメントは正常に機能し、さらに、CLIからDBにアクセスできますが、ezSQLで作成されたDBはfile is encrypted
エラーを出しました。
そこで、ezSQLコードを少し掘り下げました。すぐに、新しいSQLite3クラスではなく、PDOメソッドを使用していることがわかります。多分それは何かです-私はそれにそれ以上の時間を無駄にするつもりはありません...
いずれにせよ、私はezSQLを避け、PHPのSQLite3クラスを使用するという私の解決策を見つけました。