fnキーワードを使ったJDBCエスケープ構文 fnJDBC escape keywordJDBC escape keywordescape keywordJDBC JDBCescape functionssubstringJDBC scalar functionmodJDBC scalar functionlocateJDBC scalar function absJDBC scalar functionsqrtJDBC scalar functionconcatJDBC scalar functionTIMESTAMPADD functionJDBC scalar functionTIMESTAMPDIFF functionJDBC scalar functionacosJDBC scalar functionasinJDBC scalar function atanJDBC scalar functionceilingJDBC scalar functioncosJDBC scalar functiondegreesJDBC scalar function expJDBC scalar functionfloorJDBC scalar functionlogJDBC scalar functionlog10JDBC scalar functionpiJDBC scalar functionradiansJDBC scalar functionsinJDBC scalar functiontanJDBC scalar function

JDBCエスケープ構文にてfnというキーワードを使うことで関数を指定できます。

構文{fn 関数呼び出し}

ここで関数呼び出しは、以下に挙げるスカラー関数の何れかの名前です。

abs
数の絶対値を返す。abs(数式)

JDBCエスケープ構文の{fn abs(数式)}は、組込み構文のABSOLUTE(数式)と同等です。 より詳細な情報は、を参照してください。

acos
指定した数の逆余弦を返します。acos()

JDBCエスケープ構文の{fn acos()}は、組込み構文のACOS(数)と同等です。より詳細な情報は、ACOSを参照してください。

asin
指定した数の逆正弦を返します。asin()

JDBCエスケープ構文の{fn asin()}は、組込み構文のASIN(数)と同等です。より詳細な情報は、ASINを参照してください。

atan
指定した数の逆正接を返します。atan()

The JDBCエスケープ構文の{fn atan()}は、組込み構文のATAN(数)と同等です。より詳細な情報は、ATANを参照してください。

ceiling
指定した数を切り上げて、指定した数以上の最小の数を返します。ceiling()

JDBCエスケープ構文の{fn ceiling()}は、組込み構文のCEILING(数)と同等です。より詳細な情報はを参照してください。

concat
連結した文字列を返します。concat(文字式, 文字式)

最初の文字列に二つ目の文字列を連結した文字列が構成されます。もしどちらかの文字列が空なら、返り値はNULLとなります。JDBCエスケープ構文の{fn concat (文字式, 文字式)は、組込み構文の{ 文字式 || 文字式 }と同等です。詳細は、を参照してください。

cos
指定した引数の余弦を返します。cos()

JDBCエスケープ構文の{fn cos()}は、組込み構文のCOS(数)と同等です。詳細は、を参照してください。

degrees
指定した数をラジアンから度に変換します。degrees()

JDBCエスケープ構文の{fn degrees()}は、組込み構文のDEGREES(数)と同等です。詳細はを参照してください。

exp
eを指定した数で累乗した数を返します。exp()

JDBCエスケープ構文の{fn exp()}は、組み込み構文のEXP(数)と同等です。詳細はを参照してください。

floor
指定した数を切り捨てて、指定した数以下の最大の数を返します。floor()

JDBCエスケープ構文の{fn floor()}は、組込み構文のFLOOR(数)と同等です。 詳細はを参照してください。

locate
二つ目の文字式のうちで、一つ目の文字式が見つかる位置を返します。 開始位置が指定されない場合、二つ目の文字式の頭から、一致する位置を見つけようとします。locate(文字式,文字式 [, 開始位置] )

JDBCエスケープ構文の{fn locate(文字式,文字式 [, 開始位置] )}は、組込み構文のLOCATE(CharacterExpression, CharacterExpression [, StartPosition] )と等価です。詳細はを参照してください。

log
指定した数の自然対数(底をeとします。)を返します。log()

JDBCエスケープ構文の{fn log()}は、組込み構文のLOG(数)と等価です。詳細はを参照してください。

log10
指定した数の10を底とする対数を返します。log10()

JDBCエスケープ構文の{fn log10()}は、組込み構文の、LOG10(数)と等価です。詳細はを参照してください。

mod
一つ目の引数を二つ目の引数で割った余り(剰余)を返します。 一つ目の引数が負であった場合のみ、結果は負となります。mod(整数, 整数)

詳細はを参照してください。

pi
piの最近似値を返します。pi()

JDBCエスケープ構文の{fn pi()}は、組込み構文のPI()と等価です。詳細はを参照してください。

radians
指定した数を度からラジアンに変換します。radians()

JDBCエスケープ構文の{fn radians()}は、組込み構文のRADIANS(数)と等価です。詳細はを参照してください。

sin
指定した数の正弦を返します。sin()

JDBCエスケープ構文の{fn sin()}は、組込み構文のSIN(数)と等価です。詳細はSINを参照してください。

sqrt
浮動小数点数の平方根を返します。sqrt(浮動小数点数式)

JDBCエスケープ構文の{fn sqrt (浮動小数点数式)}は、組込み構文のSQRT(浮動小数点数式)と等価です。詳細はを参照してください。

substring
文字式開始位置から始まる部分文字列を構成して返します。 文字式の最初の文字は1と数えます。 substring(文字式, 開始位置, 長さ)
tan
引数の正接を返します。tan()

JDBCエスケープ構文の{fn tan()}は、組込み構文のTAN(数)と等価です。詳細はTANを参照してください。

TIMESTAMPADD
TIMESTAMPADD関数を使って、タイムスタンプに時間を足すことができます。関数はタイムスタンプに整数を時間の種類に沿って処理して、加算した値を新しいタイムスタンプとして返します。負の整数を与えることで減算もできます。

TIMESTAMPADDはJDBCエスケープの関数で、JDBCエスケープ関数の構文でのみ利用可能です。

TIMESTAMPADD( 時間の種類, 整数式, タイムスタンプ式 )

日付や時刻にTIMESTAMPADDを実行するには、日付や時刻をタイムスタンプに変換する必要があります。日付は時刻のフィールドに00:00:00.0を与えることでタイムスタンプに変換できます。時刻は現在日付を日付のフィールドに与えることで、タイムスタンプに変換できます。

WHERE節にて、タイムスタンプを計算する関数に日時の列を置くべきではありません。なぜならオプティマイザが、その列への索引を利用しなくなるからです。

TIMESTAMPDIFF
TIMESTAMPDIFF関数により指定した時間の種類によるタイムスタンプの間の差を計算できます。例えば、関数により二つのタイムスタンプ間の分数を返すことができます。

TIMESTAMPDIFFはJDBCエスケープの関数で、JDBCエスケープ関数の構文でのみ利用できます。

TIMESTAMPDIFF( 時間の種類, タイムスタンプ式1, タイムスタンプ式2 )

日付や時刻にTIMESTAMPDIFFを実行するには、日付や時刻をタイムスタンプに変換する必要があります。日付は時刻のフィールドに00:00:00.0を与えることでタイムスタンプに変換できます。時刻は現在日付を日付のフィールドに与えることで、タイムスタンプに変換できます。

WHERE節にて、タイムスタンプを計算する関数に日時の列を置くべきではありません。なぜならオプティマイザが、その列への索引を利用しなくなるからです。

TIMESTAMPADD および TIMESTAMPDIFFに指定できる時間の種類 TIMESTAMPADDおよびTIMESTAMPDIFFは、タイムスタンプへの算術演算を行うために使われます。これ等の関数は以下にあげる時間の種類を演算処理で利用できます。
  • SQL_TSI_DAY
  • SQL_TSI_FRAC_SECOND
  • SQL_TSI_HOUR
  • SQL_TSI_MINUTE
  • SQL_TSI_MONTH
  • SQL_TSI_QUARTER
  • SQL_TSI_SECOND
  • SQL_TSI_WEEK
  • SQL_TSI_YEAR
エスケープ関数のTIMESTAMPADDとTIMESTAMPDIFFを利用する例

次の書き方で、現在より一ヵ月後の値を返します。

{fn TIMESTAMPADD( SQL_TSI_MONTH, 1, CURRENT_TIMESTAMP)}

次の書き方で、現在と2008年1月1日の間が何週間かを返します。

{fn TIMESTAMPDIFF(SQL_TSI_WEEK, CURRENT_TIMESTAMP, timestamp('2008-01-01-12.00.00.000000'))}