0

属性のみを選択し、別の属性がNULLの場合にのみ選択したい場合、どうすれば達成できますか。

私はこれの長い道のりを知っています:

select val1 from test_table where val1 is not null
OR
select val2 from test_table where val1 is null

このソリューションの悪い点は、非常に長く複雑な選択がある場合、それを2回書く必要があるということです...

例えば:

select val1 from test_table where condition1 AND condition2 AND condition3 AND val1 is not null
OR
select val2 from test_table where condition1 AND condition2 AND condition3 AND val1 is null

ですから、これにはもっと短い形式があるかもしれません。とにかく、これはプログラミング言語の IF や CASE のようなものです (私は思います)。

どんなアイデアでも大歓迎です。最初の ide: 内部選択は 2 番目の選択を短縮できます

4

3 に答える 3

4
select coalesce(val1, val2) from test_table
于 2013-08-07T14:14:02.043 に答える
2
SELECT ISNULL(val1,val2)
FROM test_table

または

SELECT COALESCE(val1,val2)
FROM test_table

次のような複数の値を持つことができるため、後者を好みます。

SELECT COALESCE(val1,val2,val3,val4,....,valn)
FROM test_table

つまり、val1 が null の場合は val2 を取得し、それも null の場合は val3 などを valn に到達するまで取得します...

于 2013-08-07T14:14:34.817 に答える
1

case以下のように式を使用する必要があります

select 
  case 
    when condition1 is not null AND condition2 is not null AND condition3 is not null AND val1 is not null then val1
    when condition1 is null     AND condition2 is null     AND condition3 is null     AND val1 is null     then val2
    else null
  end
from test_table
于 2013-08-07T14:14:05.147 に答える