isnull()、nvl()、ifnull()、またはcoalesce()に相当するsqlite
質問
私のコードには、以下のような多くのチェックがないようにしたいと思います。
myObj.someStringField = rdr.IsDBNull(someOrdinal)
? string.Empty
: rdr.GetString(someOrdinal);
このようなことをすることで、クエリにヌルの世話をすることができると考えました。
SELECT myField1, [isnull](myField1, '')
FROM myTable1
WHERE myField1 = someCondition
私はsqliteを使用していますが、 isnull
関数。また、他のデータベースで認識されているいくつかの同等のものを試しました(NVL()
, IFNULL()
と COALESCE()
)、しかし、sqliteはそれらのいずれも認識していないようです。
誰かがこれを行うためのより良い方法を知っているか、知っていますか?残念ながら、データベースにはすべてのフィールドのデフォルト値がありません。さらに、いくつかを使用する必要があります LEFT JOIN
条項場合は、返されたフィールドの一部がnullになります。 LEFT JOIN
テーブルは存在しません。
解決
IFNULL
, 、こちらを参照してください: http://www.sqlite.org/lang_corefunc.html#ifnull
関数の周りのブラケットはありません
他のヒント
これを試して
ifnull(X,Y)
例えば
select ifnull(InfoDetail,'') InfoDetail; -- this will replace null with ''
select ifnull(NULL,'THIS IS NULL');-- More clearly....
ifnull()
関数は、最初の非ヌル引数のコピーを返し、両方の引数がnullの場合はnullを返します。 Ifnull()
正確に2つの引数が必要です。 ifnull()
関数は相当します coalesce()
2つの引数があります。
ない場合 ISNULL()
方法、代わりにこの式を使用できます。
CASE WHEN fieldname IS NULL THEN 0 ELSE fieldname END
これは同じように機能します ISNULL(fieldname, 0)
.
使用する IS NULL
また IS NOT NULL
isnull()メソッドの代わりにwhere-clause:
SELECT myField1
FROM myTable1
WHERE myField1 IS NOT NULL
nvl()およびisnull()の使用に相当する場合:使用:
IFNULL(column, altValue)
column
:評価している列。
altValue
:「列」がnullの場合、返品したい値。
例:
SELECT IFNULL(middle_name, 'N/A') FROM person;
*注:coalesce()関数は、他のデータベースと同じように機能します。
出典:
- coaless()関数 (w3schools)
- SQLiteが理解したSQL (sqliteウェブサイト)
そのような関数を簡単に定義して使用できます。
ifnull <- function(x,y) {
if(is.na(x)==TRUE)
return (y)
else
return (x);
}
または同じミニフォームバージョン:
ifnull <- function(x,y) {if(is.na(x)==TRUE) return (y) else return (x);}