6

T-SQLの「ISNULL」を記述するANSIの方法を見つけようとしています。(修正、「IN NULL」でした)インターネット上のいくつかの投稿では、合体を使用して「ISNULL」のように機能させることができると述べています

私がこれを行うのが好きな理由:ポータブルコード。また、クエリはである行を返す必要がありますNULL

これまでのところ、私はこれを作成しました:

SELECT empid,
       firstname,
       lastname,
       country,
       coalesce(region,'unknown') AS regions ,
       city
FROM HR.Employees

結果セットは次のようになります。

empid   firstname           lastname       country  regions city
1           Sara            Davis           USA     WA      Seattle
2           Don             Funk            USA     WA      Tacoma
3           Judy            Lew             USA     WA      Kirkland 
4           Yael            Peled           USA     WA      Redmond
5           Sven            Buck            UK      unknown London
6           Paul            Suurs           UK      unknown London
7           Russell         King            UK      unknown London
8           Maria           Cameron         USA     WA      Seattle
9           Zoya            Dolgopyatova    UK      unknown London

である行を識別しNULLましたが、このセットからそれらを除外するにはどうすればよいですか?

4

3 に答える 3

10

IS NULLとはどちらCOALESCEもANSI規格であり、ほとんどすべての妥当なデータベースで利用できます。あなたが望む構成は、私が思うに、次のとおりです。

where region IS NULL

これは標準の構文です。

のようにCOALESCE機能IS NULLさせるには、データに含まれていないことがわかっている値が必要です。

where coalesce(region, '<null>') <> '<null>'

ただし、日付と数値には異なる値が必要になります。

于 2013-02-09T20:05:45.757 に答える
2

IS NULLは有効な ANSI SQL-92 であり、null 述語と呼ばれます。

<null predicate> ::= <row value constructor> IS [ NOT ] NULL

SQL-92の 8.6 項を参照してください。

したがって、WHERE列名IS NULLは完全に有効です。

ANSI SQL が T-SQL とは異なる NULL 値を扱うビットは、WHEREcolumn name= NULLまたはWHEREcolumn nameを記述するときです<> NULLSET ANSI NULLS (Transact-SQL)を参照してください。

于 2013-02-09T20:03:52.847 に答える