0

次のようないくつかのコード セル (インデックス作成用) と 1 つの "値" セル (関心のあるデータが存在する場所) で構成されるテーブルがあります。

 column:      datatype:

  code1         int
  code2         int
  code3         int
  code4         int
  attributes    varchar(max)

このテーブルに追加するストアド プロシージャのいくつかの入力コードをチェックしています。追加の制約は、入力コード (@code1、@code2、@code3、@code4) が何らかの値と等しいか、null である可能性があることです。 、しかし、テーブルのいくつかの一致する行のものと同じです。

次の文を言う最善の方法は何ですか。

 SET @targetAttributesCell = (SELECT attributes FROM MyTable
                               WHERE (code1 = @code1)
                                 AND (code2 = @code2)
                                 AND (code3 = @code3)
                                 AND (code4 = @code4)); <-- where code1/@code1 'IS NULL' or = '[some integer]'?

前もって感謝します。もっと明確にする必要がある場合はお知らせください。

4

3 に答える 3

3

どうぞ:

WHERE ISNULL(Code4,SomeInteger)=SomeInteger

Code4 が null の場合、整数と一致します。Code4 が整数に一致する場合、整数に一致します。Code4 がその他の整数の場合、一致しません。

編集

このチェックも必要ですか?テーブルに NULL 値はありますか? その場合、NULL パラメータは一致します。

于 2012-11-15T17:31:41.540 に答える
-1

これを試して...

SET @targetAttributesCell = (SELECT attributes FROM MyTable
                               WHERE ( @code1 IS NOT NULL and code1 = @code1)
                                 AND (@code2 IS NOT NULL and code2 = @code2)
                                 AND (@code3 IS NOT NULL and code3 = @code3)
                                 AND (@code4 IS NOT NULL and code4 = @code4)); <-- where code1/@co
于 2012-11-15T17:19:13.317 に答える