UDT列、ARRAY列、VARRAY列、地理空間列、PERIOD列のnull処理 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ定義言語 詳細トピック

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
17.00
Published
2020年6月
ft:locale
ja-JP
ft:lastEdition
2021-03-30
dita:mapPath
ja-JP/jpx1556733107962.ditamap
dita:ditavalPath
ja-JP/jpx1556733107962.ditaval
dita:id
B035-1184
Product Category
Software
Teradata Vantage

STRUCTURED型のUDT列、ARRAY列、VARRAY列、Geospatial列、またはPERIOD列でnull属性をサポートする場合、またはnullを返すことのあるマップ順序付けルーチンがUDT、Geospatial、またはPERIOD列に含まれている場合、この型を指定するCREATE TABLE文またはALTER TABLE文には、そのUDT列、ARRAY列、VARRAY列、Geospatial列、またはPERIOD列にNOT NULL属性を指定するようにします。

列でnullが許可されているとともに、この型のためのマップ順序付けルーチンまたはシステム生成のオブザーバー メソッドがnullを返すことができる場合には、NOT CASESPECIFIC属性を持つ列にクエリーを実行するときと似た状況になることがあります。この状況では、いくつかのクエリーに関し、同じリクエストを出してもクエリーごとに結果が異なる可能性があります。

UDTの順序付けルーチンは列値が等しいかどうかを判別するとともに、ソート操作の照合順序も判別します。

この推奨事項に従わない場合、以下の状況が同等に扱われる可能性があります。

  • NULL列
  • Null属性を含み、マップまたはオブザーバー ルーチンがnullを返すSTRUCTURED型

ある場合にはnullの列が結果セットに返され、別の場合にはnull属性を含んだ非nullのSTRUCTURED型が結果セットに返されます。

以下の単純な例に、テーブル定義でUDTのためにNOT NULL属性を指定する方法を示します。

     CREATE TABLE udtTable (
       id         INTEGER,
       udtColumn  myStructUdtWithNullAttributes NOT NULL);