3

where句なしでnull以外の値を選択する方法はありますか? 私はそれがこのようにできることを知っています

SELECT X, Y, Z
FROM T
WHERE X IS NOT NULL

しかし、whereを使用せずにselect句にnull 'filter'を入れる方法があるかどうか疑問に思っています

多分このようなものですか?

SELECT NOT_NULL(X), Y, Z
FROM T

タイ

4

5 に答える 5

9

いいえ、方法はありません。フィルターをかける必要がある場合は、WHERE句が必要です。そうは言っても、ISNULLまたはCOALESCEを使用して、nullから返される値を別の値に変更できます。

于 2013-01-10T12:00:05.737 に答える
4

COALESCEをお探しですか?

すなわち

SELECT COALESCE(HasBananas, 'No') FROM Sometable
于 2013-01-10T12:01:44.933 に答える
0

なぜでしょうか:)しかし、WHEREははるかに優れています。

ここでのトリックは、ON何かを比較するNULLと常にFALSE偶数でNULL=NULLあるJOIN 条件にありますFALSE

SQLFiddle デモ

select * from t 
join 
(
select distinct x from t
) t1 on (t.x=t1.x);
于 2013-01-10T12:16:41.030 に答える
0

値が NULL かどうかを確認し、結果でブール値として返すだけの場合は、次のようなものを使用できます。

SELECT CASE 
         WHEN X IS NULL THEN 0
         ELSE 1
       END AS XisNull,
       Y, 
       Z
FROM T

フィルタリングするだけの場合は、WHERE ステートメントを使用します。それはそれのために作成されました:-)

于 2013-11-27T13:37:31.783 に答える
0

これを行う正当な理由は見当たりませんが、本当に WHERE が必要ない場合は、JOIN 句でフィルター処理できます。

SELECT X, Y, Z
FROM T
JOIN (SELECT null a) Q ON X IS NOT NULL
于 2013-01-10T12:11:51.220 に答える