0

vb6 フロントエンドと sybase をバックエンドとして使用しています。where 句で IsNull を使用できますか、または = NULL を使用する必要があります

SQLStr = "select distinct thrd_pty.id_thrd_pty, thrd_pty.name_thrd_pty, thrd_pty.nbr_tax_idtn " _
           & "from thrd_pty, cntct_rltn, cntct " _
           & "where cntct.id_cntct = '" & cntct(ColNum, CurThrdPty) & "' and cntct_rltn.id_super = cntct.id_cntct and cntct_rltn.name_super = 'cntct' and thrd_pty.id_thrd_pty = cntct_rltn.id_thrd_pty and cntct_rltn.dt_eff_end IsNull "
4

2 に答える 2

1

Sybase の通常の構文は、AND cntct_rltn.dt_eff_end IS NULL(この例ではまったく問題ありません) またはISNULL(cntct_rltn.dt_eff_end, 0)null を定義済みのデフォルト値に置き換えたい、より複雑なもののいずれかです。ただし、ASE 15 では次のいずれかを実行できます。

Adaptive Server は、使用する演算子と比較する値の型に応じて、さまざまな方法で null 値を処理します。一般に、NULL 値が特定の値または別の NULL と等しい (または等しくない) かどうかを判断できないため、NULL 値を比較した結果は UNKNOWN になります。次のケースでは、expression が任意の列、変数、リテラル、またはこれらの組み合わせであり、NULL として評価される場合に TRUE を返します。

  • 式がヌルです
  • 式 = null
  • expression = @x ここで、@x は NULL を含む変数またはパラメーターです。この例外により、null の既定のパラメーターを使用してストアド プロシージャを記述しやすくなります。
  • expression != n ここで、n は NULL を含まないリテラルであり、expression は NULL と評価されます。(ソース

(個人的なスタイルの好みとして、大文字は私のものです)

補足として、COALESCE()function を使用して NULL 値を処理することもできますが、ユースケースでは有用なものは何も追加されません。

参照:

于 2013-07-05T15:41:02.577 に答える
1

使用is null:

cntct_rltn.dt_eff_end がヌルです

詳細はこちら

編集:

cQ = "update var1 = null ".(可能) .cQ = "update var1 is null" ????? – ニルディオギ

更新する場合は、代入演算子を使用する必要があります=。条件を評価する場合にのみ使用できますis null(提供した例のような)。

于 2013-07-05T15:41:11.240 に答える