1. ホーム
  2. .net

[解決済み] SQLite の ISNULL()、NVL()、IFNULL()、COALESCE() と同等なものです。

2022-12-26 14:34:58

質問

以下のようなチェックがたくさん入るのは避けたいのですが。

myObj.someStringField = rdr.IsDBNull(someOrdinal) 
                            ? string.Empty 
                            : rdr.GetString(someOrdinal);

このようにすれば、クエリにNULLを処理させることができると考えました。

SELECT myField1, [isnull](myField1, '') 
FROM myTable1
WHERE myField1 = someCondition

私はSQLiteを使っていますが、SQLiteは isnull 関数を認識しません。他のデータベースで認識される同等のものも試してみましたが ( NVL() , IFNULL()COALESCE() ) がありますが、SQLite はそれらのいずれも認識しないようです。

どなたか、これを行うための提案またはより良い方法をご存知でしょうか。残念ながら、データベースはすべてのフィールドのデフォルト値を持っていません。さらに、私はいくつかの LEFT JOIN 節を使用する必要があります。 LEFT JOIN テーブルの一致するレコードが存在しないため、返されるフィールドのいくつかは null になります。

どのように解決するのですか?

IFNULL は、こちらをご覧ください。 http://www.sqlite.org/lang_corefunc.html#ifnull

関数を括弧で囲まない