17.10 - 結果のタイプ - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQL関数、式、および述部

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Release Date
2021年7月
Content Type
プログラミング リファレンス
Publication ID
B035-1145-171K-JPN
Language
日本語 (日本)

NVLは、渡された引数に関連付けられたデータ型によって戻り値のデータ型が異なるスカラー関数です。

  • 入力引数が数値タイプの場合、関数は最も優先順位が高い引数を決定し、そのデータ型に他の引数を変換して、そのデータ型を返します。優先順位の順序の詳細については、<Teradata Vantage™ - SQL外部ルーチン プログラミング、B035-1147>の「互換データ型」を参照してください。

    そのデータ型がDECIMAL/NUMERICであり、入力引数の精度とスケールが異なる場合、戻りタイプの精度とスケールは最大精度になるように設定されます。例えば、入力引数がDECIMAL(6,3)、DECIMAL(7,4)、およびDECIMAL(8,7)の場合、精度の低下を避けるために、戻りタイプは小数点の左が3桁、右が7桁必要になります。

    最大精度を維持できない場合、データはDBS制御レコードのRoundHalfWayMagUpフィールドに基づいて丸められます。例えば、入力引数がDECIMAL(32, 8)とDECIMAL(30, 28)の場合、戻りタイプはDECIMAL(38,14)になります。これにより、小数点の左が24桁(DECIMAL(32,8)引数に必要)、小数点の右が14桁使用できます。

    データ型が固定小数点数のNUMBERで精度が38以下の場合、戻りタイプの精度とスケールは、DECIMAL/NUMERICと同じメソッドを使用して計算されます。ただし、精度が38より大きい場合は、精度の低下を避けるために戻りタイプをNUMBER(*)に変更します。データ型が浮動小数点のNUMBERの場合、戻りタイプはNUMBER(*)になります。

  • 2つの引数が文字データ型の場合、関数は第2引数を第1引数のデータ型に変換し、そのタイプをVARCHARとして返します。
  • 入力文字のタイプがすべてLATINの場合、結果はLATINになります。一部の入力がLATINでない場合、関数はすべての入力をUnicodeに変換します。返される文字セットはUnicodeになります。

UDFに適用される暗黙のデータ型変換ルールを使用して上記のタイプに変換できる、データ型の引数も渡すことができます。

UDFの暗黙の型変換ルールは、Vantageで通常使用される暗黙の型変換ルールよりも制限されています。UDFの暗黙の変換ルールに従って、必要なデータ型に変換できない引数は、明示的にキャストする必要があります。