1

SQLにnvl()と同等の関数はありますか?

または、特定のシナリオで同じように使用するのに十分近いものですか?


更新: noif
ステートメントnocase
ステートメント
noisnull
nocolesce

select nvl (purge_date,"SODIUFOSDIUFSDOIFUDSF") from id_rec where id=36581;


(expression)

SODIUFOSDIUFSDOIFUDSF

1 row(s) retrieved.

select isnull (purge_date,"SODIUFOSDIUFSDOIFUDSF") from id_rec where id=36581;

  674: Routine (isnull) can not be resolved.
Error in line 1
Near character position 8

select coalesce (purge_date,"SODIUFOSDIUFSDOIFUDSF") from id_rec where id=36581;

  674: Routine (coalesce) can not be resolved.
Error in line 1
Near character position 8

select decode(purge_date, NULL, "01/01/2009", purge_date) from id_rec where id=74115;

  800: Corresponding types must be compatible in CASE expression.
Error in line 1
Near character position 57
4

4 に答える 4

5

ISNULL(単一の置換の場合)

また

COALESCE(引数の中で最初のnull以外の式を返します。)

于 2009-01-16T16:39:50.780 に答える
3

SQL Server: IsNull または COALESCE http://msdn.microsoft.com/en-us/library/ms184325.aspx

Sybase: isnull 関数 http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.help.ase_15.0.blocks/html/blocks/blocks162.htm

Postgres: 完全にチェックしていませんが、見つかりませんでした。ここから IS NULL を選択してビルドすることを提案します http://archives.postgresql.org/pgsql-sql/1998-06/msg00142.php

DB2 - 合体 http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/com.ibm.db2.udb.doc/admin/r0000780.htm

于 2009-01-16T16:51:53.907 に答える
2

Informixを使用しているようです。

AFAIK、そこにデコードがあります:

DECODE(field, NULL, 'it is null, man', field)と同じ結果が得られるはずですNVL(field, 'it is null, man')

使用しているRDBMSの正確な名前とバージョンを投稿してください。

于 2009-01-16T16:41:19.090 に答える
2

800 エラーを生成している DECODE ステートメントの問題は単純です。'01/01/2009'は文字列として扱われ、実際にはエラーを生成するのは 4 番目の引数です。

DECODE ステートメントの入力と出力は異なるデータ型である可能性があるため、エンジンはこの場合、より明示的に指定する必要があることに注意してください。(文字列または文字列、または日付または元の日付として解析された文字列引数purge_dateとしてキャストしますか? エンジンが知る方法はありません。'01/01/2009'

これを試して:

SELECT DECODE(purge_date, NULL, '01/01/2009'::DATE, purge_date)

3 番目の引数を次のように書くこともできます。

    DATE('01/01/2009')
    MDY(1,1,2009)

バージョンと個人的な好みに応じて。

于 2009-01-19T01:22:45.740 に答える