スカラー関数 - ODBC Driver for Teradata

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

Product
ODBC Driver for Teradata
Release Number
16.20
Published
2018年10月
Language
日本語
Last Update
2019-02-12
dita:mapPath
ja-JP/fxv1527114222338.ditamap
dita:ditavalPath
ja-JP/fxv1527114222338.ditaval
dita:id
B035-2526
Product Category
Teradata Tools and Utilities

Teradata DatabaseはODBCスカラー関数を多数サポートしており、今後のリリースで、他のスカラー関数も徐々に追加される予定です。Teradata Databaseで現在サポートされているスカラー関数の一覧については、<Teradata Database関数、演算子、式および述部ユーザー ガイド、B035-1445>を参照してください。

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

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

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

ステートメントの記述 ODBCドライバで生成されるSQL(SQLNativeSql) Teradata Database 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')
失敗 失敗

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

関数呼び出し 変更 実装されているTeradata Databaseのバージョン
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

Teradata Databaseバージョン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) 指定した日付の年を返します。