99

コードに次のような多くのチェックを入れないようにしたいと思います。

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

次のような操作を行うことで、クエリでnullを処理できると考えました。

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

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

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

4

6 に答える 6

140

IFNULL、ここを参照してください:http ://www.sqlite.org/lang_corefunc.html#ifnull

関数を角かっこで囲まない

于 2009-04-28T19:03:55.630 に答える
45

これを試して

ifnull(X,Y)  

例えば

select ifnull(InfoDetail,'') InfoDetail; -- this will replace null with ''
select ifnull(NULL,'THIS IS NULL');-- More clearly....

このifnull()関数は、最初のNULL以外の引数のコピーを返します。両方の引数がNULLの場合は、NULLを返します。Ifnull()正確に2つの引数が必要です。この関数は、2つの引数を使用したifnull()場合と同等です。coalesce()

于 2013-06-24T11:50:57.127 に答える
30

メソッドがない場合はISNULL()、代わりに次の式を使用できます。

CASE WHEN fieldname IS NULL THEN 0 ELSE fieldname END

これはと同じように機能しISNULL(fieldname, 0)ます。

于 2010-12-19T12:45:28.140 に答える
5

NVL()およびISNULL()と同等の場合は、次を使用します。

IFNULL(column, altValue)

column:評価している列。

altValue:'column'がnullの場合に返す値。

例:

SELECT IFNULL(middle_name, 'N/A') FROM person;

*注:COALESCE()関数は、他のデータベースの場合と同じように機能します。

出典:

于 2018-10-11T20:56:37.947 に答える
4

IS NULLISNULL()メソッドの代わりにまたはIS NOT NULLWHERE句で使用します。

SELECT myField1
FROM myTable1
WHERE myField1 IS NOT NULL
于 2016-07-06T07:24:14.200 に答える
-5

このような関数を簡単に定義して、次のように使用できます。

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);}
于 2015-04-18T04:38:40.467 に答える