スカラー関数 - ODBC Driver for Teradata

ODBC Driver for Teradata® ユーザー ガイド

Product
ODBC Driver for Teradata
Release Number
17.10
Published
2021年6月
Language
日本語
Last Update
2021-09-23
dita:mapPath
ja-JP/wxs1608578396899.ditamap
dita:ditavalPath
ja-JP/wxs1608578396899.ditaval
dita:id
B035-2526
Product Category
Teradata Tools and Utilities

Vantageは多数のODBCスカラー関数をサポートしており、今後の新しいデータベース リリースで、他のスカラー関数のサポートも徐々に追加される予定です。データベースで現在サポートされているスカラー関数の一覧については、<Teradata Vantage™ - SQL関数、式、および述部, B035-1145>を参照してください。

クライアントが関数のエスケープ シーケンス(‘SELECT {fn MOD(x, y) }’などの‘{fn scalar-function}’構文)を使用してスカラー関数を問合わせる場合、ODBC Driver for Teradataは、接続されているデータベースがスカラー関数をサポートしているかどうかを確認します。サポートされている場合、ODBC Driver for Teradataはクエリー(“SELECT MOD(x, y)”など)を、データベースに直接送信し、サポートされていない場合は、ユーザーのクエリーをその接続されているデータベースでサポートされているクエリー(“SELECT((x) MOD (y))”など)に変換します。

クライアントは、“SELECT MOD(x, y)”などの関数エスケープ シーケンスを使用せずにスカラー関数を送信することがあります。その場合、ODBC Driver for Teradataはどのようなチェックや変換も行なわずにクライアントのクエリーをそのままデータベースに送信します。そのクエリーは、接続先のデータベースでそのスカラー関数がサポートされていれば成功し、サポートされていなければ失敗します(例えば、MOD関数は、高度なSQL Engine 16.20 Feature Update 1ではサポートされていますが、Teradata Database 15.10ではサポートされていません)。

下表に、上記の動作に関する例をいくつか示します。

ステートメントの記述 ODBCドライバで生成されるSQL(SQLNativeSql) 高度なSQL Engine 16.20 Feature Update 1 Teradata Database 15.10
SELECT {fn BIT_LENGTH('Teradata')}
SELECT(Octet_Length('Teradata')*8)
成功 成功
SELECT BIT_LENGTH('Teradata')
SELECT BIT_LENGTH('Teradata')
成功 失敗
SELECT {fn DAYOFYEAR('2018-02-24') }
SELECT (((('2018-02-24')(DATE))-(((('2018-02-24')(DATE))/10000*10000+0101(DATE)))) + 1(TITLE 'DayOfYear()'))
成功 成功
SELECT DAYOFYEAR('2018-02-24')
SELECT DAYOFYEAR('2018-02-24')
失敗 失敗

高度なSQL Engineでは、次の関数が更新され、ODBCドライバで使用可能な構文がサポートされるようになりました。

関数呼び出し 変更 実装されている高度なSQL Engineのバージョン
CURRENT_DATE() 括弧の有無にかかわらず呼び出すことができます。 16.20 Feature Update 1
LENGTH(s) 数値式もサポートできます。 16.20 Feature Update 1
LTRIM(s) 数値式でも使用できます。 16.20 Feature Update 1
RTRIM(s) 数値式でも使用できます。 16.20 Feature Update 1
SUBSTRING(s,n1[,n2]) Teradataモードの新しい構文です。 16.20 Feature Update 1

高度なSQL Engine 16.20 Feature Update 1以降では、以下の関数がサポートされています。

関数呼び出し 目的
BIT_LENGTH(s) 指定した文字列の長さをビット単位で返します。
CONCAT(s1,s2[,...sn]) 2つ以上のパラメータ値を連結して1つの文字列にします。
CURDATE() 現在の日付を返します。
CURTIME() 現在のローカル時刻を返します。
DAYOFMONTH(e) 月の初めから指定日までの日数を返します。
DAYOFWEEK(e) 指定した日付の曜日を返します。
HOUR(e) 指定した時刻式の時間フィールドを返します。
LOCATE(s1,s2[,p]) サブストリングs1が始まる位置s2を返します。
MINUTE(e) 指定した時刻式の分フィールドを返します。
MOD(x1, x2) 除算の余りを返します。
MONTH(e) 年の初めから指定日までの月数を返します。
NOW() 現在の日時を返します。
SECOND(e) 指定した時刻式の秒フィールドを返します。
UCASE(s) 指定した文字列の小文字をすべて大文字にして返します。
WEEK(e) 年の初めから指定日までの週数を返します。
YEAR(e) 指定した日付の年を返します。