17.10 - SDFファイル - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - データベース ユーティリティ

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Release Date
2021年7月
Content Type
構成
Publication ID
B035-1102-171K-JPN
Language
日本語 (日本)

SDFファイルは、Vantageによる数値、日付、時刻、および通貨の書式設定方法を定義したテキスト ファイルです。この書式設定文字列は、SQL FORMAT出力句で使用される特殊なフォーマッティング文字と組み合わせて使用されます。

Vantageには、デフォルトの出力書式設定の表示編集可能なテキスト バージョンを含むデフォルトのSDFファイルが含まれています。デフォルトのSDFファイルは、/usr/tdbms/etcにあります。

SDFファイルは、Vantageの出力で、以下のような情報がどのように書式設定されるかを制御します。
  • 曜日名
  • 月の名前
  • 午前と午後の表現
  • 数値および通貨の分離記号
  • 数値および通貨の桁まとめのルール
  • 通貨記号
  • データ型に対するデフォルト表示形式
SDFファイルは、以下のデータ型のデフォルトの表示書式設定も指定します。
  • BYTEINT
  • SMALLINT
  • BIGINT
  • INTEGER
  • NUMERIC (DECIMALを含む)
  • REAL (DOUBLE PRECISIONおよびFLOATを含む)
  • DATE
  • TIMEおよびTIME WITH TIME ZONE
  • TIMESTAMPおよびTIMESTAMP WITH TIME ZONE
  • NUMBER

SDFファイルは、サーバーで使用されるタイムゾーンを識別するタイムゾーン文字列を指定して、夏時間(DST)を取り入れるタイムゾーンに対しDSTの開始時と終了時に対しルールを指定することもできます。

INTERVALデータ型の出力書式設定の指定にはSDFファイルは使用できません。

SDFファイルの書式設定文字列で許可される書式設定文字は、上記にリストされているデータ型に対してSQL FORMATで許可される書式設定文字と同じです。SQLのCREATE TABLE、ALTER TABLE、またはSELECT文でFORMAT出力句を使用することにより、SDFファイル内のデータ型に対するデフォルト表示形式をオーバーライドすることができます。

SDF引用符付き文字列は引用符(U+0022)で区切られています。また、Vantageによって受け入れられるUnicode文字であれば、ほとんどどんな文字でも指定可能です。しかし、以下の制限事項があります。
  • SDF引用符付き文字列の中の文字は、印刷可能な7ビットASCII文字(U+0020、U+0021、およびU+0023からU+007Eまで)に限定されます。SDF引用符付き文字列内で引用符自体(U+0022)を使用することはできません。
  • 円記号(\)(U+005C)は、その文字自体を表わすものではなく、U+009Fより上のUnicode文字を指定する際に使用することができます。\uXXXXのシーケンスは、それに対応するUnicode文字U+ XXXXを指定するものです(XXXXはUnicode文字の16進値)。

形式は、<Teradata Vantage™ - データ タイプおよびリテラル、B035-1143>に示されている有効な形式に限られます。

例えば、SDFファイル内の通貨文字列の値を、ご自分の地域に固有の通貨記号に設定することができます。SQL SELECT文で金額情報を表示するときに通貨記号を組み込むためには、FORMAT出力句にLの書式設定文字を使用します。SQL出力書式設定句の詳細については、<Teradata Vantage™ - データ タイプおよびリテラル、B035-1143>を参照してください。

この他、SDFファイルを使用してタイムゾーン文字列を指定することも可能です。タイムゾーン文字列を指定することで、Vantageはサマー タイムを使用するロケールのシステム時刻を自動的に調整できるようになります。

SDF構成要素

SDFファイルは、各エントリが1つの種類のデータの出力書式化を指定する、またはタイムゾーン文字列を指定するSDF要素である単純な形式を使用します。SDF要素の一般的な形式は次のとおりです。

KEYWORD {value_list}

value_listは二重引用符文字で区切られ、セミコロンで区切られた1つ以上の値です。

特に明記しない限り、キーワードは大文字と小文字を区別しませんが、値は区別します。SDF書式設定文字列は、データのタイプによって構成要素がさらに制限されているのでない限り、7ビットASCIIの印刷可能文字から成ります。範囲外の文字については、\uというUnicodeの16進表記を使用します。SDFには、//で始まる1行のコメントを含めることができます。

すべての要素はSDFファイルで一度指定する必要があるため、既存のSDFファイルで始め、ニーズに合わせて編集すると便利です。

次のテーブルでは、個々のSDF要素について説明します。

SDF要素キーワード 値の説明
ShortDays 母国語での7つの曜日の略語です。

これらの名前は長さが異なることがあります。このキーワードには7個の値を入力する必要があります。

例:

ShortDays {"Sun";"Mon";"Tue";"Wed";"Thu";
"Fri";"Sat"}
LongDays 母国語での7つの曜日のフルネームです。

この名前の順序は、ShortDaysの名前の順序と一致している必要があります。これらの名前は長さが異なることがあります。このキーワードには7個の値を入力する必要があります。

例:

LongDays {"Sunday";"Monday";"Tuesday";
"Wednesday";"Thursday";"Friday";
"Saturday"}
ShortMonths 母国語での12個の月名の略語です。

これらの名前の長さは異なる場合があります。このキーワードには12個の値を入力する必要があります。

例:

ShortMonths {"Jan";"Feb";"Mar";"Apr";
"May";"Jun";"Jul";"Aug";"Sep";"Oct";"Nov";"Dec"}
LongMonths 母国語での12個の月名のフルネームです。

この名前の順序は、ShortMonthsの名前の順序と一致している必要があります。これらの名前は長さが異なることがあります。このキーワードには12個の値を入力する必要があります。

例:

LongMonths {"January";"February";"March"; "April";"May";"June";"July";"August"; "September";"October";"November";
"December"}
AMPM 母国語でのAM (午前)およびPM (午後)の略語。

これらの名前は長さが異なることがあります。このキーワードには2個の値を入力する必要があります。

例:

AMPM {"AM";"PM"}
RadixSeparator 非通貨文字列の整数部と小数部を分離する文字です。分離文字には、以下のものは含められません。
  • 正符号(+)
  • 負符号(-)
  • 数字(0~9)
  • E
  • e
  • V
  • v

RadixSeparator値はGroupSeparator値と異なる必要があります。ただし、RadixSeparator値はCurrencyRadixSeparator値と同じにすることができます。

例:

RadixSeparator {"."}
GroupSeparator 金額以外の文字列において、整数部の桁のグループを分離する文字です。
分離文字には、以下のものは含められません。
  • 正符号(+)
  • 負符号(-)
  • 数字(0~9)
  • E
  • e

GroupSeparator値は、CurrencyGroupSeparator値と同じにすることができます。

例:

GroupSeparator {","}
GroupingRule 金額以外の文字列において、各グループの桁数を定義する数値のグループです。
それぞれのグループのサイズは異なる場合があります。それぞれの数値は、各グループ内の桁数を指定します。最初の整数は、小数点の直前のグループのサイズを定義し、それ以降の整数は、その上の桁のグループを順次定義します。
  • 最後の整数が-1の場合には、それ以降のグルーピングは行なわれません。
  • 最後の整数が-1でない場合には、前のグループ(存在する場合)のサイズが、残りの桁にも繰り返し使用されます。
  例:

GroupingRule {"3"}

GroupingRule {“3”}では、123456789.00という数値は、123,456,789.00と書式設定されます。

GroupingRule {"3,2,-1"}

GroupingRule {“3,2,-1”}では、123456789.00という数値は、1234,56,789.00と書式設定されます。

Currency ローカル通貨を表わすために使用される文字列。
通貨には、以下のものは含められません。
  • 正符号(+)
  • 負符号(-)
  • 数字
  • CurrencyRadixSeparator
  • CurrencyGroupSeparator
  • 単独のE
  • 単独のe
  • パーセント記号(%)
  • カンマ(,)
  • ドット(.)
  • スラッシュ(/)
  • コロン(:)

ドル、円、ユーロの通貨文字列の例:

Currency {"$"}
Currency  {"\u00A5"} 
Currency  {"\u20AC"}
ISOCurrency ISO 4217による大文字の3文字コードとしてのローカル通貨を表わす文字列。(その文字列がISO 4217に指定されていることを確認する必要があります。)
通貨には、以下のものは含められません。
  • 正符号(+)
  • 負符号(-)
  • 数字
  • CurrencyRadixSeparator
  • CurrencyGroupSeparator
  • 単独のE
  • 単独のe
  • パーセント記号(%)
  • カンマ(,)
  • ドット(.)
  • スラッシュ(/)
  • コロン(:)

例:

ISOCurrency {"USD"}
CurrencyName 完全な綴りの通貨名としてのローカル通貨を表わす文字列。
通貨には、以下のものは含められません。
  • 正符号(+)
  • 負符号(-)
  • 数字
  • CurrencyRadixSeparator
  • CurrencyGroupSeparator
  • 単独のE
  • 単独のe
  • パーセント記号(%)
  • カンマ(,)
  • ドット(.)
  • スラッシュ(/)
  • コロン(:)

例:

CurrencyName {"US Dollars"}
CurrencyRadixSeparator 金額の文字列の整数部と小数部を区切る文字。
分離文字には、以下のものは含められません。
  • 正符号(+)
  • 負符号(-)
  • 数字
  • E
  • e
  • V
  • v

値はCurrencyGroupSeparatorの値とは異なる必要があります。

例:

CurrencyRadixSeparator {"."}
CurrencyGroupSeparator 金額の文字列の整数部の数字グループを区切る文字です。
分離文字には、以下のものは含められません。
  • 正符号(+)
  • 負符号(-)
  • 数字
  • 単独のE
  • 単独のe

値はCurrencyRadixSeparatorの値とは異なる必要があります。

例:

CurrencyGroupSeparator {","}
CurrencyGroupingRule 金額の文字列において、各グループの桁数を定義する数値のグループです。

それぞれのグループのサイズは異なる場合があります。それぞれの数値は、各グループ内の桁数を指定します。最初の整数は、小数点の直前のグループのサイズを定義し、それ以降の整数は、その上の桁のグループを順次定義します。

例:

CurrencyGroupingRule {"3"}
DualCurrency 二重通貨文字を表わす文字列。
通貨には、以下のものは含められません。
  • 正符号(+)
  • 負符号(-)
  • 数字
  • CurrencyRadixSeparator
  • CurrencyGroupSeparator
  • 単独のE
  • 単独のe
  • パーセント記号(%)
  • カンマ(,)
  • ドット(.)
  • スラッシュ(/)
  • コロン(:)

例:

DualCurrency {"$"}
DualISOCurrency ISO 4217による3文字コードとしての二重通貨を表わす文字列。
通貨には、以下のものは含められません。
  • 正符号(+)
  • 負符号(-)
  • 数字
  • CurrencyRadixSeparator
  • CurrencyGroupSeparator
  • 単独のE
  • 単独のe
  • パーセント記号(%)
  • カンマ(,)
  • ドット(.)
  • スラッシュ(/)
  • コロン(:)

例:

DualISOCurrency {"USD"}
DualCurrencyName 完全な綴りの通貨名としての二重通貨を表わす文字列。
通貨には、以下のものは含められません。
  • 正符号(+)
  • 負符号(-)
  • 数字
  • CurrencyRadixSeparator
  • CurrencyGroupSeparator
  • 単独のE
  • 単独のe
  • パーセント記号(%)
  • カンマ(,)
  • ドット(.)
  • スラッシュ(/)
  • コロン(:)

例:

DualCurrencyName {"US Dollars"}
BYTEINT BYTEINTデータ型に適用されるデフォルト形式を表わす文字列。

例:

BYTEINT {"-(3)9"}
INTEGER INTEGERデータ型に適用されるデフォルト形式を表わす文字列。

例:

INTEGER {"-(10)9"}
SMALLINT SMALLINTデータ型に適用されるデフォルト形式を表わす文字列。

例:

SMALLINT {"-(5)9"}
BIGINT BIGINTデータ型に適用されるデフォルト形式を表わす文字列。

例:

BIGINT {"-(19)9"}
NUMERIC NUMERICおよびDECIMALデータ型に適用されるデフォルト形式を表わす文字列。

例:

NUMERIC {"--(I).9(F)"}
  • Iは、NUMERICおよびINTEGERデータの整数部を表示するために必要とされる文字数を表わします。例えば、次のようになります。
    • INTEGER型では、Iは10です。
    • DECIMAL型(10,2)では、Iは8です。
  • Fは、NUMERICデータの小数部を表示するために必要とされる文字数を表わします。例えば、DECIMAL型(10,2)では、Fは2です。
REAL REAL、DOUBLE PRECISION、およびFLOATデータ型に適用されるデフォルト形式を表わす文字列。

例:

REAL {"-9.99999999999999E-999"}
DATE DATEおよびPERIOD(DATE)データ型に適用されるデフォルト形式を表わす文字列。

例:

DATE {"YY/MM/DD"}
TIME TIME、TIME WITH TIME ZONE、およびPERIOD(TIME)データ型に適用されるデフォルト形式を表わす文字列。

例:

TIME {"HH:MI:SS.S(F)Z"}
TIMESTAMP TIMESTAMP、TIMESTAMP WITH TIME ZONE、およびPERIOD(TIMESTAMP)データ型に適用されるデフォルト形式を表わす文字列。

例:

TIMESTAMP {"YYYY-MMDDBHH:MI:SS.S(F)Z"}
TimeZoneString TimeZoneStringは、タイムゾーンまたはGMTオフセットを表わします。

タイムゾーンのタイム オフセットを表わす文字列です。

例:

{"GMT-8"; "-8"; "0"}

夏時間(DST)を使用する地域では、文字列により、暦年におけるどの時点でシステムのタイムゾーン オフセットを変更するかについてルール セットを定義できます。システムは、このコードに従ってDSTを自動的に調整します。例えば、次のようになります。

例:

{"America Pacific"; "-8"; "0"; "2"; "4"; "4"; "1"; "0"; "0"; "02:00:00"; "3"; "10"; "0"; "0"; "-1"; "02:00:00"; "1987"; "2006"; "-8"; "0"; "-7"; "0"; "4"; "3"; "8"; "0"; "0"; "02:00:00"; "4"; "11"; "1"; "0"; "0"; "02:00:00";"2007"; "9999"; "-8"; "0"; "-7"; "0"}
サンプル タイムゾーン文字列のルールは、1987年から9999年までをカバーしています。1987より前の年をカバーするルールが必要な場合、サンプルを変更し、付加的なルールを追加することができます。

タイムゾーン文字列およびタイムゾーン ルールの詳細は、<Teradata Vantage™ - SQLの日付/時刻関数と式、B035-1211>を参照してください。

また、/usr/tdbms/etcファイルに入っているサンプルのタイムゾーン文字列とタイムゾーン ルールも参照してください。このファイルは、tdlocaledef_tzrules.txtにあります。

NUMBER NUMBERデータ型に適用されるデフォルト形式を表わす文字列。

例:

NUMBER {"FN9"}