isnull()、nvl()、ifnull()、またはcoalesce()に相当するsqlite

StackOverflow https://stackoverflow.com/questions/799375

  •  18-09-2019
  •  | 
  •  

質問

私のコードには、以下のような多くのチェックがないようにしたいと思います。

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()関数は、他のデータベースと同じように機能します。

出典:

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

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);}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top