17.10 - Unpackの例: 末尾に特殊文字を持つIgnoreInvalid ('true') - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - Advanced SQL Engine分析関数

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

この例では、最初の仮想入力列の項目の末尾に特殊文字があります。仮想列を分離する区切り記号がありません。ColumnLengthは2です。Unpackの呼び出しにはIgnoreInvalid ('true')が含まれていますが、出力は予期されません。

入力

t2
c1
1,1919-04-05
1.1919-04-05
5,.1919-04-05
2,2019/04/05
4.,.1919-04-05
32019/04/05

SQL呼び出し

SEL * FROM Unpack (
  ON t2
  USING
  TargetColumn ('c1')
  OutputColumns ('a','b')
  OutputDataTypes ('int','date')
  ColumnLength ('2','*')
  IgnoreInvalid ('True')
) AS dt;

出力

a b
1 19/04/05
1 19/04/05
2 19/04/05

出力が予期されないのは、次に示す、Unpackが使用する内部ライブラリの動作に原因があります。

入力行 動作
1,1919-04-05 ライブラリは末尾のカンマを削除し、"1"を整数に変換し、"1919-04-05"を現在の日付に変換します。(出力行1。)
1.1919-04-05 ライブラリは末尾のピリオドを削除し、"1"を整数に変換し、"1919-04-05"を現在の日付に変換します。(出力行2。)
5,.1919-04-05 ライブラリは末尾のカンマを削除し、"5"を整数に変換しますが、"1919-04-05"を現在の日付に変換することはできません。(出力行なし。)

ColumnLength ('3','*')を使用すると、ライブラリは末尾のカンマとピリオドを削除し、"5"を整数に変換し、"1919-04-05"を現在の日付に変換して、この入力行の行を出力します。

2,2019/04/05 ライブラリは末尾のカンマを削除し、"2"を整数に変換し、"1919/04/05"を現在の日付に変換します。(出力行3。)
4.,.1919-04-05 ライブラリは"4."を整数に変換しますが、",.1919-04-05"を現在の日付に変換することはできません。(出力行なし。)
32019/04/05 ライブラリは"32"を整数に変換しますが、"019/04/05"を現在の日付に変換することはできません。(出力行なし。)