# fnキーワードを使ったJDBCエスケープ構文

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

#### 構文

    {fn 関数呼び出し}

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

abs
  数の絶対値を返す。

      abs(数式)

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

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(数)と同等です。より詳細な情報はCEILおよびCEILING関数を参照してください。

concat
  連結した文字列を返します。

      concat(文字式, 文字式)

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

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

      cos(数)

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

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

      degrees(数)

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

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

      exp(数)

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

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

      floor(数)

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

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

      locate(文字式,文字式 [, 開始位置] )

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

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

      log(数)

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

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

      log10(数)

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

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

      mod(整数, 整数)

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

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

      pi()

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

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

      radians(数)

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

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

      sin(数)

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

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

      sqrt(浮動小数点数式)

  JDBCエスケープ構文の{fn sqrt (浮動小数点数式)}は、組込み構文の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'))}

親トピック: JDBCエスケープの構文
関連資料
呼び出し文のJDBCエスケープキーワード
JDBCエスケープ構文
LIKE節のJDBCエスケープ構文
外部結合のJDBCエスケープ構文
時刻書式のJDBCエスケープ構文
日付書式のJDBCエスケープ構文
タイムスタンプ書式のJDBCエスケープ構文