Hitachi

ノンストップデータベース HiRDB Version 10 SQLリファレンス


2.16.2 システム定義スカラ関数

ここでは,システム定義スカラ関数の文法について説明します。

なお,システム定義スカラ関数を使用する場合は,事前に必要となる作業及び規則がありますので注意してください。

事前に必要となる作業
  • システム定義スカラ関数を使用する場合,pdinit又はpdmodでデータディクショナリLOB用RDエリアを作成しておく必要があります。pdinit及びpdmodについては,マニュアル「HiRDB コマンドリファレンス」を参照してください。

  • 拡張システム定義スカラ関数を使用する場合は,あらかじめpdextfuncコマンドで関数を定義してください。

  • 拡張システム定義スカラ関数を使用する場合,ディクショナリ表に行が追加されるため,データディクショナリ用RDエリアの容量,及びシステムログ量が増加します。増加する容量は,あらかじめ見積もっておいてください。容量の見積もりについては,マニュアル「HiRDB システム導入・設計ガイド」の「データディクショナリ用RDエリアの容量の見積もり」及び「拡張システム定義スカラ関数の定義時に出力されるシステムログ量」を参照してください。なお,不要になった拡張システム定義スカラ関数は,pdextfuncコマンドで削除できます。そうすることで,データディクショナリ用RDエリアの空き容量を増やせます。

規則
  • 繰返し列を引数の値式として指定する場合,添字を指定してください。ただし,添字としてANYは指定できません。

  • 予備列は引数中に指定できません。

  • 埋込み変数又は?パラメタを,単独で値式に指定する場合は,AS データ型を必ず指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。

  • システム定義スカラ関数を指定して導出した,名前付き導出表に対する問合せでは,ホールダブルカーソルを使用できません。

  • システム定義スカラ関数は,ビュー定義中の導出問合せ式には指定できません。

〈この項の構成〉

(1) ACOS

(a) 機能

引数の逆余弦である角度を,0〜πの範囲(ラジアン単位)で返します。

(b) 形式

 〔MASTER.〕ACOS(引数)

(c) 規則

  1. 引数に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 値式に指定できるものを次に示します。

    • 数定数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 四則演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  4. 引数のデータ型は数データ型にしてください。

  5. 結果のデータ型はFLOATになります。

  6. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数の値式がナル値であれば,結果もナル値になります。

  7. 関数値が定義されていない値を引数に指定すると,定義域エラー(domain error occurs)になります。

(2) ADD_INTERVAL

(a) 機能

引数1で指定した既定の文字列表現('YYYY-MM-DD hh:mm:ss')の時刻印に,引数2で指定した10進数表現(±YYYYMMDDhhmmss.)の日時間隔を加算した,時刻印の既定の文字列表現を返します。

(b) 形式

 〔MASTER.〕ADD_INTERVAL(引数1,引数2)

(c) 規則

  1. 引数1及び引数2に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 引数1の値式に指定できるものを次に示します。

    • 文字列定数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 連結演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 引数2の値式に指定できるものを次に示します。

    • 10進数定数又は整数定数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 四則演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  4. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  5. 引数1のデータ型は文字データ型(CHAR又はVARCHAR)にしてください。また,値の長さは19バイト以下にしてください。

  6. 引数1のデータ型が文字データ型(CHAR,VARCHAR)の場合,そのデータ型の文字集合はUTF16以外にしてください。引数1に,文字集合がUTF16の文字データ型を指定する場合,CAST指定を用いて既定文字集合の文字データ型に変換してください。

  7. 引数2のデータ型はDECIMAL,INTEGER,又はSMALLINTにしてください。また,14けた以下の整数値を指定してください。なお,小数点以下を指定しても無視されます。

  8. 結果のデータ型はCHAR(19)になります。

  9. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数1又は引数2の値式がナル値であれば,結果もナル値になります。

  10. 関数の結果の文字集合は,引数1の文字集合となります。

  11. 引数1の値には,有効な時刻印の既定の文字列表現('YYYY-MM-DD hh:mm:ss')を指定してください。時刻印の既定の文字列表現には,小数秒を指定しないでください。

  12. 引数2の値式には,日時間隔の10進数表現(±YYYYMMDDhhmmss.)を指定してください。

    • YYYY:年数

    • MM:月数

    • DD:日数

    • hh:時数

    • mm:分数

    • ss:秒数

    引数2の値が正の場合,引数1の時刻印への日時間隔(YYYYMMDDhhmmss.)の加算になります。引数2の値が負の場合,引数1の時刻印への日時間隔(YYYYMMDDhhmmss.)の減算になります。

  13. 日時間隔の加減算は,年,月,日,時,分,秒の順に演算します。年又は月の演算結果が存在しない日付(小の月の31日,及びうるう年以外の年の2月29日)になった場合の結果は,その月の最終日に修正されます。

    なお,任意の月の最終日から数か月後が,必ずその月の最終日になるわけではありません。また,ある日付に任意の月数を加算した後,その結果の日付から同じ月数を引いても,必ず元の日付になるとは限らないので注意してください。

    同じ月数を引いても,必ず元の日付になるとは限らないので注意してください。

  14. 時刻印の既定の文字列表現でうるう秒を指定した場合,演算結果は次のようになります。

    • 分以上の演算で,結果の秒が60秒以上になった場合は,59秒に修正されます。

    • 秒の演算では,60秒を1分,61秒を1分1秒として演算します。

    • 関数の結果には,うるう秒を含みません。

  15. 関数の結果が,0001年01月01日00時00分00秒〜9999年12月31日23時59分59秒の範囲でない場合,オーバフローエラーになります。なお,オーバフローエラー抑止が設定されている場合の演算結果については,「オーバフローエラー抑止が設定されている場合の演算結果」を参照してください。

  16. 関数の結果は,時刻印の既定の文字列表現になります。

(d) 使用例

ADD_INTERVALの使用例を次に示します。

  ADD_INTERVAL('1999-12-31 23:59:59',10000000001.)
    ==> '2001-01-01 00:00:00'
 
  ADD_INTERVAL('2001-01-01 00:00:00',-10000000001.)
    ==> '1999-12-31 23:59:59'
 
  ADD_INTERVAL('1956-06-07 03:15:30',400313115450.)
    ==> '1996-09-20 15:10:20'
 
  ADD_INTERVAL('1998-12-31 13:59:59',10200030405.)
    ==> '2000-02-29 17:04:04'
 
  ADD_INTERVAL('2000-02-29 17:04:04',-10200030405.)
    ==> '1998-12-28 13:59:59'
 
  ADD_INTERVAL('2000-03-05 17:04:60',100.)
    ==> '2000-03-05 17:05:59'
    システム共通定義 pd_leap_secondが Yの場合です。
 
  ADD_INTERVAL('2000-03-05 17:04:60',-60.)
    ==> '2000-03-05 17:04:00'
    システム共通定義 pd_leap_secondがYの場合です。
 
  ADD_INTERVAL(CAST(CURRENT_TIMESTAMP AS CHAR(19)),-100000000.)
    ==> '2008-09-29 10:17:48'
    CURRENT TIMESTAMPが,2008年10月29日10時17分48秒の場合です。

(3) ASCII

(a) 機能

引数で指定した文字列の,最初の文字のASCIIコードを整数値で返します。

(b) 形式

 〔MASTER.〕ASCII(引数)

(c) 規則

  1. 引数に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 値式に指定できるものを次に示します。

    • 文字列定数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 連結演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  4. 引数のデータ型は文字データ型(CHAR又はVARCHAR)にしてください。

  5. 引数のデータ型の文字集合は既定文字集合にしてください。

  6. 結果のデータ型はINTEGERになります。

  7. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数の値式がナル値であれば,結果もナル値になります。

  8. 引数の値の長さが0バイトの場合,結果はナル値になります。

(d) 使用例

ASCIIの使用例を次に示します。

  ASCII('ABC')       ==> 65
  CHR(ASCII('ABC'))  ==> 'A'

(4) ASIN

(a) 機能

引数の逆正弦である角度を,−π/2〜π/2の範囲(ラジアン単位)で返します。

(b) 形式

 〔MASTER.〕ASIN(引数)

(c) 規則

  1. 引数に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 値式に指定できるものを次に示します。

    • 数定数

    • 列指定

    • SQL変数,又はSQLパラメタ

    • 四則演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  4. 引数のデータ型は数データ型にしてください。

  5. 結果のデータ型はFLOATになります。

  6. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数の値式がナル値であれば,結果もナル値になります。

  7. 関数値が定義されていない値を引数に指定すると,定義域エラー(domain error occurs)になります。

(5) ATAN

(a) 機能

引数の逆正接である角度を,−π/2〜π/2の範囲(ラジアン単位)で返します。

(b) 形式

 〔MASTER.〕ATAN(引数)

(c) 規則

  1. 引数に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 値式に指定できるものを次に示します。

    • 数定数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 四則演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  4. 引数のデータ型は数データ型にしてください。

  5. 結果のデータ型はFLOATになります。

  6. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数の値式がナル値であれば,結果もナル値になります。

(6) ATAN2

(a) 機能

x/yの逆正接である角度を,−π〜πの範囲(ラジアン単位)で返します。なお,xは引数1とし,yは引数2とします。

(b) 形式

 〔MASTER.〕ATAN2(引数1,引数2)

(c) 規則

  1. 引数1及び引数2に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 値式に指定できるものを次に示します。

    • 数定数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 四則演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  4. 引数のデータ型は数データ型にしてください。

  5. 結果のデータ型はFLOATになります。

  6. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数1又は引数2の値式がナル値であれば,結果もナル値になります。

(7) CEIL

(a) 機能

引数の値以上の,最小の整数値を返します。

(b) 形式

 〔MASTER.〕CEIL(引数)

(c) 規則

  1. 引数に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 値式に指定できるものを次に示します。

    • 数定数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 四則演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  4. 引数のデータ型は数データ型にしてください。

  5. 結果のデータ型を次の表に示します。

    表2‒50 システム定義スカラ関数CEILの結果のデータ型

    引数のデータ型

    結果のデータ型

    SMALLINT

    INTEGER

    INTEGER

    INTEGER

    DECIMAL(p,s)

    DECIMAL(p,s)

    SMALLFLT

    FLOAT

    FLOAT

    FLOAT

  6. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数の値式がナル値であれば,結果もナル値になります。

  7. 関数の結果が,結果のデータ型で表現できない値ならば,オーバフローエラーになります。なお,オーバフローエラー抑止が設定されている場合の結果については,「オーバフローエラー抑止が設定されている場合の演算結果」を参照してください。

(8) CENTURY

(a) 機能

引数で指定された日付の世紀を返します。

(b) 形式

 〔MASTER.〕CENTURY(引数)

(c) 規則

  1. 引数に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 値式に指定できるものを次に示します。

    • CURRENT_DATE値関数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 日付演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  4. 引数のデータ型はDATEにしてください。

  5. 結果のデータ型はINTEGERになります。

  6. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数の値式がナル値であれば,結果もナル値になります。

(d) 使用例

CENTURYの使用例を次に示します。

  CENTURY(DATE('1900-12-31'))    ==> 19
  CENTURY(DATE('1901-01-01'))    ==> 20
  CENTURY(DATE('1999-12-31'))    ==> 20
  CENTURY(DATE('2000-12-31'))    ==> 20
  CENTURY(DATE('2001-01-01'))    ==> 21

(9) CHR

(a) 機能

引数で指定した整数値が示す,ASCIIコードの文字を返します。引数の値が0〜255の範囲外の値ならば,ナル値を返します。

(b) 形式

 〔MASTER.〕CHR(引数)

(c) 規則

  1. 引数に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 値式に指定できるものを次に示します。

    • 整数定数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 四則演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  4. 引数のデータ型は,INTEGER又はSMALLINTにしてください。

  5. 結果のデータ型はCHAR(1)になります。

  6. 結果の文字集合は既定の文字集合になります。

  7. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数の値式がナル値であれば,結果もナル値になります。

(d) 使用例

CHRの使用例を次に示します。

  CHR(65)           ==> 'A'
  ASCII(CHR(65))    ==> 65

(10) COS

(a) 機能

ラジアンで角度を指定した,引数の余弦(三角関数COS)を返します。

(b) 形式

 〔MASTER.〕COS(引数)

(c) 規則

  1. 引数に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 値式に指定できるものを次に示します。

    • 数定数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 四則演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  4. 引数のデータ型は数データ型にしてください。

  5. 結果のデータ型はFLOATになります。

  6. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数の値式がナル値であれば,結果もナル値になります。

(11) COSH

(a) 機能

引数の双曲線余弦を返します。

(b) 形式

 〔MASTER.〕COSH(引数)

(c) 規則

  1. 引数に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 値式に指定できるものを次に示します。

    • 数定数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 四則演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  4. 引数のデータ型は数データ型にしてください。

  5. 結果のデータ型はFLOATになります。

  6. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数の値式がナル値であれば,結果もナル値になります。

  7. 関数の結果が,結果のデータ型で表現できない値ならば,オーバフローエラーになります。なお,オーバフローエラー抑止が設定されている場合の結果については,「オーバフローエラー抑止が設定されている場合の演算結果」を参照してください。

(12) DATE_TIME

(a) 機能

引数1で指定したDATE型の日付と,引数2で指定したTIME型の時刻とを,時刻印の既定の文字列表現('YYYY-MM-DD hh:mm:ss')に変換して返します。

(b) 形式

 〔MASTER.〕DATE_TIME(引数1,引数2)

(c) 規則

  1. 引数1及び引数2に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 引数1の値式に指定できるものを次に示します。

    • CURRENT_DATE値関数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 日付演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 引数2の値式に指定できるものを次に示します。

    • CURRENT_TIME値関数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 時刻演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  4. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  5. 引数1のデータ型はDATEにしてください。引数2のデータ型はTIMEにしてください。

  6. 結果のデータ型はCHAR(19)になります。

  7. 結果の文字集合は,既定の文字集合となります。

  8. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数1又は引数2の値式がナル値であれば,結果もナル値になります。

  9. DATE_TIME(日時,時刻)の結果である時刻印の既定の文字列表現は,日付の既定の文字列表現,1文字の空白,及び時刻の既定の文字列表現を連結した値になります。

    CHAR(日付) || ' ' || CHAR(時刻) 

(d) 使用例

DATE_TIMEの使用例を次に示します。

  DATE_TIME(DATE('1999-12-31'), TIME('23:59:59'))
    ==> '1999-12-31 23:59:59'
  DATE_TIME(CURRENT_DATE, CURRENT_TIME)
    ==> '1999-07-27 11:05:20'

(13) DAYNAME

(a) 機能

引数で指定した日付の,曜日を示す文字列('Sunday','Monday'などの英語の文字列)を返します。

(b) 形式

 〔MASTER.〕DAYNAME(引数)

(c) 規則

  1. 引数に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 値式に指定できるものを次に示します。

    • CURRENT_DATE値関数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 日付演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  4. 引数のデータ型はDATEにしてください。

  5. 結果のデータ型はVARCHAR(18)になります。

  6. 結果の文字集合は,既定の文字集合となります。

  7. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数の値式がナル値であれば,結果もナル値になります。

(d) 使用例

DAYNAMEの使用例を次に示します。

  DAYNAME(DATE('1999-06-06'))    ==> 'Sunday'
  DAYNAME(DATE('1999-06-07'))    ==> 'Monday'
  DAYNAME(DATE('1999-06-08'))    ==> 'Tuesday'
  DAYNAME(DATE('1999-06-09'))    ==> 'Wednesday'
  DAYNAME(DATE('1999-06-10'))    ==> 'Thursday'
  DAYNAME(DATE('1999-06-11'))    ==> 'Friday'
  DAYNAME(DATE('1999-06-12'))    ==> 'Saturday'

(14) DAYOFWEEK

(a) 機能

引数で指定した日付の,曜日を示す1〜7の整数値(その週の第何日目かを示す値)を返します。なお,週の最初の日は日曜日とし,1は日曜日を示します。

(b) 形式

 〔MASTER.〕DAYOFWEEK(引数)

(c) 規則

  1. 引数に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 値式に指定できるものを次に示します。

    • CURRENT_DATE値関数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 日付演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  4. 引数のデータ型はDATEにしてください。

  5. 結果のデータ型はINTEGERになります。

  6. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数の値式がナル値であれば,結果もナル値になります。

(d) 使用例

DAYOFWEEKの使用例を次に示します。

  DAYOFWEEK(DATE('1999-06-06'))    ==> 1
  DAYOFWEEK(DATE('1999-06-07'))    ==> 2
  DAYOFWEEK(DATE('1999-06-08'))    ==> 3
  DAYOFWEEK(DATE('1999-06-11'))    ==> 6
  DAYOFWEEK(DATE('1999-06-12'))    ==> 7
    なお, '1999-06-06' は,日曜日です。

(15) DAYOFYEAR

(a) 機能

引数で指定した日付が,その年の第何日目かを示す1〜366の整数値を返します。

(b) 形式

 〔MASTER.〕DAYOFYEAR(引数)

(c) 規則

  1. 引数に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 値式に指定できるものを次に示します。

    • CURRENT_DATE値関数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 日付演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  4. 引数のデータ型はDATEにしてください。

  5. 結果のデータ型はINTEGERになります。

  6. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数の値式がナル値であれば,結果もナル値になります。

(d) 使用例

DAYOFYEARの使用例を次に示します。

  DAYOFYEAR(DATE('1999-01-01'))    ==>   1
  DAYOFYEAR(DATE('1999-02-28'))    ==>  59
  DAYOFYEAR(DATE('1999-06-07'))    ==> 158
  DAYOFYEAR(DATE('1999-12-31'))    ==> 365
  DAYOFYEAR(DATE('2000-12-31'))    ==> 366

(16) DEGREES

(a) 機能

引数で指定した角度を,ラジアンから度数に変換します。

(b) 形式

 〔MASTER.〕DEGREES(引数)

(c) 規則

  1. 引数に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 値式に指定できるものを次に示します。

    • 数定数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 四則演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  4. 引数のデータ型は数データ型にしてください。

  5. 結果のデータ型はFLOATになります。

  6. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数の値式がナル値であれば,結果もナル値になります。

  7. 関数の結果が,結果のデータ型で表現できない値ならば,オーバフローエラーになります。なお,オーバフローエラー抑止が設定されている場合の結果については,「オーバフローエラー抑止が設定されている場合の演算結果」を参照してください。

(17) EXP

(a) 機能

自然対数の底の累乗を求めます。

(b) 形式

 〔MASTER.〕EXP(引数)

(c) 規則

  1. 引数に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 値式に指定できるものを次に示します。

    • 数定数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 四則演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  4. 引数のデータ型は数データ型にしてください。

  5. 結果のデータ型はFLOATになります。

  6. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数の値式がナル値であれば,結果もナル値になります。

  7. 関数の結果が,結果のデータ型で表現できない値ならば,オーバフローエラーになります。なお,オーバフローエラー抑止が設定されている場合の結果については,「オーバフローエラー抑止が設定されている場合の演算結果」を参照してください。

(18) FLOOR

(a) 機能

引数の値以下の,最大の整数を返します。

(b) 形式

 〔MASTER.〕FLOOR(引数)

(c) 規則

  1. 引数に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 値式に指定できるものを次に示します。

    • 数定数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 四則演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  4. 引数のデータ型は数データ型にしてください。

  5. 結果のデータ型を次の表に示します。

    表2‒51 システム定義スカラ関数FLOORの結果のデータ型

    引数のデータ型

    結果のデータ型

    SMALLINT

    INTEGER

    INTEGER

    INTEGER

    DECIMAL(p, s)

    DECIMAL(p, s)

    SMALLFLT

    FLOAT

    FLOAT

    FLOAT

  6. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数の値式がナル値であれば,結果もナル値になります。

  7. 関数の結果が,結果のデータ型で表現できない値ならば,オーバフローエラーになります。なお,オーバフローエラー抑止が設定されている場合の結果については,「オーバフローエラー抑止が設定されている場合の演算結果」を参照してください。

(19) GREATEST

(a) 機能

すべての引数中の最大値を返します。

(b) 形式

 〔MASTER.〕GREATEST(引数,引数〔,引数〕)

(c) 規則

  1. 引数に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 引数の数は最大3個です。

  3. 値式に指定できるものを次に示します。

    • 定数

    • USER値関数,CURRENT_DATE値関数,又はCURRENT_TIME値関数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 四則演算,日付演算,時刻演算,又は連結演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  4. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  5. 指定できる引数のデータ型の組み合わせを次の表に示します。

    表2‒52 システム定義スカラ関数GREATEST(引数3を省略する場合)の引数のデータ型の組み合わせ

    引数1のデータ型

    引数2のデータ型

    指定可否

    INTEGER,SMALLINT,DECIMAL,FLOAT,又はSMALLFLT

    INTEGER,SMALLINT,DECIMAL,FLOAT,又はSMALLFLT

    CHAR,又はVARCHAR

    CHAR,又はVARCHAR

    MCHAR,又はMVARCHAR

    MCHAR,又はMVARCHAR

    NCHAR,又はNVARCHAR

    NCHAR,又はNVARCHAR

    DATE

    DATE

    TIME

    TIME

    上記以外のデータ型の組み合わせ

    ×

    (凡例)

    ○:指定できます。

    ×:指定できません。

    表2‒53 システム定義スカラ関数 GREATEST(引数3を指定する場合)の引数のデータ型の組み合わせ

    引数1のデータ型

    引数2のデータ型

    引数3のデータ型

    指定可否

    INTEGER,SMALLINT,DECIMAL,FLOAT,又はSMALLFLT

    INTEGER,SMALLINT,DECIMAL,FLOAT,又はSMALLFLT

    INTEGER,SMALLINT,DECIMAL,FLOAT,又はSMALLFLT

    CHAR,又はVARCHAR

    CHAR,又はVARCHAR

    CHAR,又はVARCHAR

    MCHAR,又はMVARCHAR

    MCHAR,又はMVARCHAR

    MCHAR,又はMVARCHAR

    NCHAR,又はNVARCHAR

    NCHAR,又はNVARCHAR

    NCHAR,又はNVARCHAR

    DATE

    DATE

    DATE

    TIME

    TIME

    TIME

    上記以外のデータ型の組み合わせ

    ×

    (凡例)

    ○:指定できます。

    ×:指定できません。

  6. 引数に指定した値式のデータ型が文字データ型の場合,値式の文字集合はすべて同じにしてください。

  7. 結果のデータ型を次の表に示します。

    表2‒54 システム定義スカラ関数GREATESTの結果のデータ型

    引数のデータ型

    結果のデータ型

    INTEGER又はSMALLINT

    INTEGER

    DECIMAL〔,INTEGER又はSMALLINT〕

    DECIMAL※1

    FLOAT,SMALLFLT〔,DECIMAL,INTEGER,又はSMALLINT〕

    FLOAT

    CHAR又はVARCHAR

    VARCHAR※2

    MCHAR又はMVARCHAR

    MVARCHAR※2

    NCHAR又はNVARCHAR

    NVARCHAR※2

    DATE

    DATE

    TIME

    TIME

    注※1

    精度と位取りを次に示します。pi及びsiを,それぞれi番目の引数の精度及び位取りとします。

    精度=max(p1-s1, p2-s2,…)+max(s1, s2,…)

    位取り=max(s1, s2,…)

    結果の精度が38を超えた場合はエラーになります。

    また,INTEGERはDECIMAL(10,0),SMALLINTはDECIMAL(5,0)として扱われます。

    注※2

    最大長を次に示します。niをi番目の引数の最大長(固定長のデータ型の場合は定義長)とします。

    最大長=max(n1, n2,…)

  8. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数の値式のどれかがナル値であれば,結果もナル値になります。

  9. 結果のデータ型が文字データ型となる場合,結果の文字集合は引数に指定した値式の文字集合となります。

(20) HALF

(a) 機能

引数2で指定した月,及び引数3で指定した日を各年度の開始月日として,引数1で指定された日付が上期か下期かを1〜2の整数で返します。

(b) 形式

 〔MASTER.〕HALF(引数1〔,引数2〔,引数3〕〕)

(c) 規則

  1. 引数に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 引数1の値式に指定できるものを次に示します。

    • CURRENT_DATE値関数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 日付演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 引数2及び引数3の値式に指定できるものを次に示します。

    • 整数定数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 四則演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  4. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  5. 引数1のデータ型はDATEにしてください。引数2及び引数3のデータ型は,INTEGER又はSMALLINTにしてください。

  6. 結果のデータ型はINTEGERになります。

  7. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数の値式のどれかがナル値であれば,結果もナル値になります。

  8. 引数2を省略すると,1を仮定します。引数2に指定できる値の範囲は,1〜12です。

    引数3を省略すると,1を仮定します。引数3に指定できる値の範囲は,引数2の値が2の場合は,1〜29です。それ以外の場合は,1〜(引数2で指定した月の最終日)です。

  9. 結果は,次の規則によって求められます。

    • 引数1の日<引数3の場合

      月数=引数1の月−引数2−1

    • 引数1の月≧引数3の場合

      月数=引数1の月−引数2

    • 月数<0の場合

      結果=(月数+12)÷2+1

    • 月数≧0の場合

      結果=月数÷2+1

(d) 使用例

HALFの使用例を次に示します。

  HALF(DATE('1999-01-01'))          ==> 1
  HALF(DATE('1999-09-10'))          ==> 2
  HALF(DATE('1999-12-31'))          ==> 2
  HALF(DATE('1999-04-01'), 4)       ==> 1
  HALF(DATE('1999-09-10'), 4)       ==> 1
  HALF(DATE('1999-03-31'), 4)       ==> 2
  HALF(DATE('1999-03-21'), 3, 21)   ==> 1
  HALF(DATE('1999-09-20'), 3, 21)   ==> 1
  HALF(DATE('1999-03-20'), 3, 21)   ==> 2

(21) INSERTSTR(INSERTSTR_LONG)

(a) 機能

引数1で指定した文字列に対して,引数2で指定した文字位置から引数3で指定した文字数の部分文字列を削除し,その位置に引数4で指定した文字列を挿入した文字列を返します。

(b) 形式

 〔MASTER.〕INSERTSTR(引数1,引数2,引数3,引数4)
 〔MASTER.〕INSERTSTR_LONG(引数1,引数2,引数3,引数4)

(c) 規則

  1. 引数1,引数2,引数3,及び引数4に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 引数1及び引数4の値式に指定できるものを次に示します。

    • 文字列定数,混在文字列定数,又は各国文字列定数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 連結演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 引数2及び引数3の値式に指定できるものを次に示します。

    • 整数定数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 四則演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  4. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  5. 引数1及び引数4に指定できる引数のデータ型の組み合わせを次の表に示します。

    表2‒55 システム定義スカラ関数INSERTSTR,INSERTSTR_LONGの引数のデータ型の組み合わせ

    引数1のデータ型

    引数4のデータ型

    指定可否

    CHAR,又はVARCHAR

    CHAR,又はVARCHAR

    MCHAR,又はMVARCHAR

    MCHAR,又はMVARCHAR

    NCHAR,又はNVARCHAR

    NCHAR,又はNVARCHAR

    上記以外のデータ型の組み合わせ

    ×

    (凡例)

    ○:指定できます。

    ×:指定できません。

  6. 引数1及び引数4の両方に文字列型(CHAR又はVARCHAR)の値式を指定する場合,両方の引数の文字集合は同じにしてください。

  7. 引数4の値の最大長を次に示します。

    表2‒56 システム定義スカラ関数INSERTSTRの引数4の最大長

    引数1(及び引数4)のデータ型

    引数4の最大長

    CHAR

    又は

    VARCHAR

    既定文字集合,及び文字集合(UTF16以外)

    255

    文字集合(UTF16)

    510

    MCHAR又はMVARCHAR

    255

    NCHAR又はNVARCHAR

    127

    表2‒57 システム定義スカラ関数INSERTSTR_LONGの引数4の最大長

    引数1(及び引数4)のデータ型

    引数4の最大長

    CHAR又はVARCHAR

    32000

    MCHAR又はMVARCHAR

    32000

    NCHAR又はNVARCHAR

    16000

  8. 引数2及び引数3のデータ型は,INTEGER又はSMALLINTにしてください。

  9. 引数3に0を指定すると,部分文字列は,削除されません。

  10. 結果のデータ型を次に示します。

    表2‒58 システム定義スカラ関数INSERTSTRの結果のデータ型

    引数1のデータ型

    結果のデータ型

    CHAR(n)又はVARCHAR(n)

    VARCHAR(n)

    MCHAR(n)又はMVARCHAR(n)

    MVARCHAR(n)

    NCHAR(n)又はNVARCHAR(n)

    NVARCHAR(n)

    表2‒59 システム定義スカラ関数INSERTSTR_LONGの結果のデータ型

    引数1のデータ型

    結果のデータ型

    CHAR(n)又はVARCHAR(n)

    VARCHAR(32000)

    MCHAR(n)又はMVARCHAR(n)

    MVARCHAR(32000)

    NCHAR(n)又はNVARCHAR(n)

    NVARCHAR(16000)

  11. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数の値式のどれかがナル値であれば,結果もナル値になります。

  12. 結果のデータ型が文字データ型の場合,結果の文字集合は引数1の文字集合となります。

  13. 引数2及び引数3に指定できる値の範囲を次に示します。なお,mは引数2の値です。

    表2‒60 システム定義スカラ関数INSERTSTRの引数2及び引数3の値の範囲

    引数1のデータ型

    引数2の値の範囲

    引数3の値の範囲

    CHAR(n)

    又はVARCHAR(n)

    既定文字集合,及び文字集合(UTF16以外)

    1〜n

    0〜(n+1−m)

    文字集合(UTF16)

    1〜n/2

    0〜(n/2+1−m)

    MCHAR(n)又はMVARCHAR(n)

    1〜n

    0〜(n+1−m)

    NCHAR(n)又はNVARCHAR(n)

    1〜n

    0〜(n+1−m)

    表2‒61 システム定義スカラ関数INSERTSTR_LONGの引数2及び引数3の値の範囲

    引数1のデータ型

    引数2の値の範囲

    引数3の値の範囲

    CHAR(n)

    又はVARCHAR(n)

    既定文字集合,及び文字集合(UTF16以外)

    1〜32000

    0〜(32001−m)

    文字集合(UTF16)

    1〜16000

    0〜(16001−m)

    MCHAR(n)又はMVARCHAR(n)

    1〜32000

    0〜(32001−m)

    NCHAR(n)又はNVARCHAR(n)

    1〜16000

    0〜(16001−m)

  14. 引数1で指定した文字列の長さ(文字数)が,引数2で指定した文字位置mよりも短い場合は,文字数が(m−1)になるまで引数1の文字集合の空白(引数1のデータ型がNCHAR又はNVARCHARの場合は全角空白)が埋められ,どの部分文字列も削除されません。

    引数1で指定した文字列の長さ(文字数)がm以上で,(m−1+nd)未満の場合は,文字位置mから最後の文字までが削除されます。なお,ndは引数3で指定した文字数とします。

  15. 結果の長さは,結果のデータ型の最大長を超えないようにしてください。結果の長さが引数1の長さより長くなる場合は,INSERTSTR_LONGを使用してください。

(d) 使用例

INSERTSTR,INSERTSTR_LONGの使用例を次に示します。

  INSERTSTR('data warehouse system', 6, 9, 'base')
    ==> 'data base system'
  INSERTSTR_LONG('data system', 6, 0, 'warehouse ')
    ==> 'data warehouse system'
  INSERTSTR('data base management system', 11, 11, '')
    ==> 'data base system'
    引数4に指定しているのは,長さ0の文字列です。
 
  INSERTSTR_LONG('data base system', 31, 0, '')
    ==> 'data base system              '
    なお,結果の値には,'system'の後に14文字の空白を含みます。

(22) INTERVAL_DATETIMES

(a) 機能

引数で指定した二つの既定の文字列表現('YYYY-MM-DD hh:mm:ss')の,時刻印の間の日時間隔を,10進数表現(±YYYYMMDDhhmmss.)で返します。引数1の時刻印<引数2の時刻印の場合,結果は負の値になります。

(b) 形式

 〔MASTER.〕INTERVAL_DATETIMES(引数1,引数2)

(c) 規則

  1. 引数1及び引数2に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 値式に指定できるものを次に示します。

    • 文字列定数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 連結演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  4. 引数1及び引数2のデータ型は,文字列型(CHAR又はVARCHAR)にしてください。

  5. 引数1及び引数2の値式に指定する値式の文字集合は同じにしてください。また,文字集合はUTF16以外にしてください。引数1及び引数2に文字集合がUTF16の文字データ型を指定する場合,CAST指定を用いて既定文字集合の文字データ型に変換してください。

  6. 結果のデータ型はDECIMAL(14)になります。

  7. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数1又は引数2の値式がナル値であれば,結果もナル値になります。

  8. 引数1及び引数2の値には,有効な時刻印の既定の文字列表現('YYYY-MM-DD hh:mm:ss')を指定してください。時刻印の既定の文字列表現には,小数秒を指定してないでください。

  9. INTERVAL_DATETIMES(時刻印1,時刻印2)の結果は,次の規則に従い計算されます。

    • 時刻印1<時刻印2の場合

      結果=−INTERVAL_DATETIMES(時刻印2 ,時刻印1)

    • 時刻印1≧時刻印2の場合

      ・時刻印1の秒≧時刻印2の秒のとき

       結果の秒=時刻印1の秒−時刻印2の秒

      ・時刻印1の秒<時刻印2の秒のとき

       結果の秒=時刻印1の秒−時刻印2の秒+60

       時刻印2の分=時刻印2の分+1

      ・時刻印1の分≧時刻印2の分のとき

       結果の分=時刻印1の分−時刻印2の分

      ・時刻印1の分<時刻印2の分のとき

       結果の分=時刻印1の分−時刻印2の分+60

       時刻印2の時=時刻印2の時+1

      ・時刻印1の時≧時刻印2の時のとき

       結果の時=時刻印1の時−時刻印2の時

      ・時刻印1の時<時刻印2の時のとき

       結果の時=時刻印1の時−時刻印2の時+24

       時刻印2の日=時刻印2の日+1

      ・時刻印1の日≧時刻印2の日のとき

       結果の日=時刻印1の日−時刻印2の日

      ・時刻印1の日<時刻印2の日のとき

       結果の日=時刻印1の日−時刻印2の日+時刻印2の月の最終日

       時刻印2の月=時刻印2の月+1

      ・時刻印1の月≧時刻印2の月のとき

       結果の月=時刻印1の月−時刻印2の月

      ・時刻印1の月<時刻印2の月のとき

       結果の月=時刻印1の月−時刻印2の月+12

       時刻印2の年=時刻印2の年+1

       結果の年=時刻印1の年−時刻印2の年

    • 結果=(結果の年×10000000000+結果の月×100000000

         +結果の日×1000000+結果の時×10000+結果の分×100

         +結果の秒)

(d) 使用例

INTERVAL_DATETIMESの使用例を次に示します。

  INTERVAL_DATETIMES('2001-01-01 00:00:00', '1999-12-31 23:59:59')
    ==>    10000000001.
  INTERVAL_DATETIMES('1999-12-31 23:59:59', '2001-01-01 00:00:00')
    ==>   -10000000001.
  INTERVAL_DATETIMES('1996-09-20 15:10:20', '1956-06-07 03:15:30')
    ==>   400313115450.
  NUMEDIT(INTERVAL_DATETIMES('1996-09-20 15:10:20',
                             '1956-06-07 03:15:30'),
          '<9990" years "90" months "90" days "90" hours "
           90" minutes "90" seconds"')
    ==>   '40 years 3 months 13 days 11 hours 54 minutes 50 seconds'

(23) ISDIGITS

(a) 機能

引数の文字列が数字だけかどうかを,BOOLEAN値で返します。

(b) 形式

 〔MASTER.〕ISDIGITS(引数)

(c) 規則

  1. 引数に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 値式に指定できるものを次に示します。

    • 文字列定数又は混在文字列定数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 連結演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  4. 引数のデータ型は,文字列型(CHAR又はVARCHAR),又は混在文字列型(MCHAR又はMVARCHAR)にしてください。また,引数の値の長さは60バイト以下にしてください。

  5. 引数のデータ型が文字列型(CHAR又はVARCHAR)の場合,そのデータ型の文字集合はUTF16以外にしてください。引数に文字集合がUTF16の文字データ型を指定する場合,CAST指定を用いて既定文字集合の文字データ型に変換してください。

  6. 結果のデータ型はBOOLEANになります。

  7. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数の値式がナル値であれば,結果もナル値になります。

  8. 引数に指定された文字列が数字('0'〜'9')だけならば,結果はTRUEになり,そうでなければ,結果はFALSEになります。

(d) 使用例

ISDIGITSの使用例を次に示します。

  ISDIGITS('1234567890')   ==> true
  ISDIGITS('123ABC')       ==> false
  ISDIGITS('')             ==> false

(24) IS_DBLBYTES

(a) 機能

引数の文字列がマルチバイト文字だけかどうかを,BOOLEAN値で返します。

(b) 形式

 〔MASTER.〕IS_DBLBYTES(引数)

(c) 規則

  1. 引数に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 値式に指定できるものを次に示します。

    • 文字列定数又は混在文字列定数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 連結演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  4. 引数のデータ型は,文字列型(CHAR又はVARCHAR),又は混在文字列型(MCHAR又はMVARCHAR)にしてください。

  5. 引数のデータ型が文字列型(CHAR又はVARCHAR)の場合,そのデータ型の文字集合は既定文字集合にしてください。

  6. 結果のデータ型はBOOLEANになります。

  7. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数の値式がナル値であれば,結果もナル値になります。

  8. 引数に指定された文字列がマルチバイト文字だけならば,結果はTRUEになり,そうでなければ,結果はFALSEになります。

(d) 使用例

IS_DBLBYTESの使用例を次に示します。

  IS_DBLBYTES(M'data base management system HiRDB')   ==>  false
  IS_DBLBYTES(M'データベース管理システムHiRDB')       ==>  false
  IS_DBLBYTES(M'データベース管理システム')             ==>  true

(25) IS_SNGLBYTES

(a) 機能

引数の文字列がシングルバイト文字だけかどうかを,BOOLEAN値で返します。

(b) 形式

 〔MASTER.〕IS_SNGLBYTES(引数)

(c) 規則

  1. 引数に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 値式に指定できるものを次に示します。

    • 文字列定数又は混在文字列定数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 連結演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  4. 引数のデータ型は,文字列型(CHAR又はVARCHAR),又は混在文字列型(MCHAR又はMVARCHAR)にしてください。

  5. 引数のデータ型が文字列型(CHAR又はVARCHAR)の場合,そのデータ型の文字集合は既定文字集合にしてください。

  6. 結果のデータ型はBOOLEANになります。

  7. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数の値式がナル値であれば,結果もナル値になります。

  8. 引数に指定された文字列がシングルバイト文字だけならば,結果はTRUEになり,そうでなければ,結果はFALSEになります。

(d) 使用例

IS_SNGLBYTESの使用例を次に示します。

  IS_SNGLBYTES(M'data base management system HiRDB')   ==> true
  IS_SNGLBYTES(M'データベース管理システムHiRDB')       ==> false
  IS_SNGLBYTES(M'データベース管理システム')             ==> false

(26) LAST_DAY

(a) 機能

引数で指定した日付の,年月の最後の日付を返します。

(b) 形式

 〔MASTER.〕LAST_DAY(引数)

(c) 規則

  1. 引数に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 値式に指定できるものを次に示します。

    • CURRENT_DATE値関数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 日付演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  4. 引数のデータ型はDATEにしてください。

  5. 結果のデータ型はDATEになります。

  6. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数の値式がナル値であれば,結果もナル値になります。

(d) 使用例

LAST_DAYの使用例を次に示します。

  LAST_DAY(DATE('1999-01-01'))   ==> '1999-01-31'
  LAST_DAY(DATE('1999-02-16'))   ==> '1999-02-28'
  LAST_DAY(DATE('1999-06-10'))   ==> '1999-06-30'
  LAST_DAY(DATE('1999-12-25'))   ==> '1999-12-31'
  LAST_DAY(DATE('2000-02-03'))   ==> '2000-02-29'

(27) LEAST

(a) 機能

すべての引数中の,最小値を返します。

(b) 形式

 〔MASTER.〕LEAST(引数,引数〔,引数〕)

(c) 規則

  1. 引数に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 引数の数は,最大3個です。

  3. 値式に指定できるものを次に示します。

    • 定数

    • USER値関数,CURRENT_DATE値関数,又はCURRENT_TIME値関数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 四則演算,日付演算,時刻演算,又は連結演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  4. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  5. 指定できる引数のデータ型の組み合わせを次の表に示します。

    表2‒62 システム定義スカラ関数 LEAST(引数3を省略する場合)の引数のデータ型の組み合わせ

    引数1のデータ型

    引数2のデータ型

    指定可否

    INTEGER,SMALLINT,DECIMAL,FLOAT,又はSMALLFLT

    INTEGER,SMALLINT,DECIMAL,FLOAT,又はSMALLFLT

    CHAR,又はVARCHAR

    CHAR,又はVARCHAR

    MCHAR,又はMVARCHAR

    MCHAR,又はMVARCHAR

    NCHAR,又はNVARCHAR

    NCHAR,又はNVARCHAR

    DATE

    DATE

    TIME

    TIME

    上記以外のデータ型の組み合わせ

    ×

    (凡例)

    ○:指定できます。

    ×:指定できません。

    表2‒63 システム定義スカラ関数 LEAST(引数3を指定する場合)の引数のデータ型の組み合わせ

    引数1のデータ型

    引数2のデータ型

    引数3のデータ型

    指定可否

    INTEGER,SMALLINT,DECIMAL,FLOAT,又はSMALLFLT

    INTEGER,SMALLINT,DECIMAL,FLOAT,又はSMALLFLT

    INTEGER,SMALLINT,DECIMAL,FLOAT,又はSMALLFLT

    CHAR,又はVARCHAR

    CHAR,又はVARCHAR

    CHAR,又はVARCHAR

    MCHAR,又はMVARCHAR

    MCHAR,又はMVARCHAR

    MCHAR,又はMVARCHAR

    NCHAR,又はNVARCHAR

    NCHAR,又はNVARCHAR

    NCHAR,又はNVARCHAR

    DATE

    DATE

    DATE

    TIME

    TIME

    TIME

    上記以外のデータ型の組み合わせ

    ×

    (凡例)

    ○:指定できます。

    ×:指定できません。

  6. 引数に指定した値式のデータ型が文字データ型の場合,値式の文字集合はすべて同じにしてください。

  7. 結果のデータ型を次の表に示します。

    表2‒64 システム定義スカラ関数LEASTの結果のデータ型

    引数のデータ型

    結果のデータ型

    INTEGER又はSMALLINT

    INTEGER

    DECIMAL〔,INTEGER又はSMALLINT〕

    DECIMAL※1

    FLOAT,SMALLFLT〔,DECIMAL,INTEGER,又はSMALLINT〕

    FLOAT

    CHAR又はVARCHAR

    VARCHAR※2

    MCHAR又はMVARCHAR

    MVARCHAR※2

    NCHAR又はNVARCHAR

    NVARCHAR※2

    DATE

    DATE

    TIME

    TIME

    注※1

    精度と位取りを次に示します。pi及びsiを,それぞれi番目の引数の精度及び位取りとします。

    精度=max(p1−s1,p2−s2,…)+max(s1,s2,…)

    位取り=max(s1,s2,…)

    結果の精度が38を超えた場合はエラーになります。また,INTEGERはDECIMAL(10,0),SMALLINTはDECIMAL(5,0)として扱われます。

    注※2

    最大長を次に示します。niをi番目の引数の最大長(固定長のデータ型の場合は定義長)とします。

    最大長=max(n1,n2,…)

  8. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数の値式のどれかがナル値であれば,結果もナル値になります。

  9. 結果のデータ型が文字列データ型の場合,引数の文字集合が結果の文字集合となります。

(28) LEFTSTR

(a) 機能

引数1の文字列の先頭(最も左)から,引数2で指定された文字数の部分文字列を抽出します。

(b) 形式

 〔MASTER.〕LEFTSTR(引数1,引数2)

(c) 規則

  1. 引数1及び引数2に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 引数1の値式に指定できるものを次に示します。

    • 文字列定数,混在文字列定数,又は各国文字列定数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 連結演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 引数2の値式に指定できるものを次に示します。

    • 整数定数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 四則演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  4. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  5. 引数1のデータ型は,次のどれかを指定してください。

    • 任意の文字集合の文字列データ型(CHAR,VARCHAR)

    • 各国文字列データ型(NCHAR,NVARCHAR)

    • 混在文字列データ型(MCHAR,MVARCHAR)

  6. 引数2のデータ型は,INTEGER又はSMALLINTにしてください。

  7. 引数2に指定できる値の範囲を次の表に示します。

    表2‒65 システム定義スカラ関数LEFTSTRの引数2の値の範囲

    引数1のデータ型

    引数2の値の範囲

    CHAR(n)

    又は

    VARCHAR(n)

    既定文字集合,及び文字集合(UTF16以外)

    0〜n

    文字集合(UTF16)

    0〜n/2

    MCHAR(n)又はMVARCHAR(n)

    0〜n

    NCHAR(n)又はNVARCHAR(n)

    0〜n

  8. 結果のデータ型を次の表に示します。

    表2‒66 システム定義スカラ関数LEFTSTRの結果のデータ型

    引数1のデータ型

    結果のデータ型

    CHAR(n)又はVARCHAR(n)

    VARCHAR(n)

    MCHAR(n)又はMVARCHAR(n)

    MVARCHAR(n)

    NCHAR(n)又はNVARCHAR(n)

    NVARCHAR(n)

  9. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数1又は引数2の値式がナル値であれば,結果もナル値になります。

  10. 引数1の文字列の値の文字数が,引数2で指定した文字数よりも少ない場合,結果は引数1と同じ値になります。

  11. 結果のデータ型が文字列型の場合,引数1の文字集合が結果の文字集合となります。

(d) 使用例

LEFTSTRの使用例を次に示します。

  LEFTSTR('data base system', 9)    ==> 'data base'
  LEFTSTR('data system', 0)         ==> ''  (長さ0の文字列)

(29) LN

(a) 機能

引数の自然対数を返します。

(b) 形式

 〔MASTER.〕LN(引数)

(c) 規則

  1. 引数に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 値式に指定できるものを次に示します。

    • 数定数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 四則演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  4. 引数のデータ型は数データ型にしてください。

  5. 結果のデータ型はFLOATになります。

  6. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数の値式がナル値であれば,結果もナル値になります。

(30) LOG10

(a) 機能

引数の常用対数を返します。

(b) 形式

 〔MASTER.〕LOG10(引数)

(c) 規則

  1. 引数に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 値式に指定できるものを次に示します。

    • 数定数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 四則演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  4. 引数のデータ型は数データ型にしてください。

  5. 結果のデータ型はFLOATになります。

  6. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数の値式がナル値であれば,結果もナル値になります。

(31) LTRIM

(a) 機能

引数1の文字列の左から,引数2で指定された文字列を構成する文字を取り除きます。引数2で指定された文字列中の文字以外が現れるまで,繰り返し取り除きます。

(b) 形式

 〔MASTER.〕LTRIM(引数1〔,引数2〕)

(c) 規則

  1. 引数1及び引数2に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 値式に指定できるものを次に示します。

    • 文字列定数,混在文字列定数,又は各国文字列定数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 連結演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  4. 引数1のデータ型は,次のどれかを指定してください。

    • 任意の文字集合の文字列型(CHAR,VARCHAR)

    • 各国文字列型(NCHAR,NVARCHAR)

    • 混在文字列型(MCHAR,MVARCHAR)

  5. 引数2を指定する場合,指定できる引数のデータ型の組み合わせを次の表に示します。

    表2‒67 システム定義スカラ関数LTRIMの引数のデータ型の組み合わせ

    引数1のデータ型

    引数2のデータ型

    指定可否

    CHAR,又はVARCHAR

    CHAR,又はVARCHAR

    MCHAR,又はMVARCHAR

    MCHAR,又はMVARCHAR

    NCHAR,又はNVARCHAR

    NCHAR,又はNVARCHAR

    上記以外のデータ型の組み合わせ

    ×

    (凡例)

    ○:指定できます。

    ×:指定できません。

  6. 引数2の値の長さは,文字列データ型又は混在文字列データ型の場合は30バイト以下(文字集合がUTF16の文字データ型の場合は60バイト以下),各国文字列データ型の場合は30文字以下にしてください。

  7. 引数1及び引数2のデータ型が両方とも文字列型の場合,値式の文字集合は同じにしてください。

  8. 結果のデータ型を次の表に示します。

    表2‒68 システム定義スカラ関数LTRIMの結果のデータ型

    引数1(及び引数2)のデータ型

    結果のデータ型

    CHAR(n)又はVARCHAR(n)

    VARCHAR(n)

    MCHAR(n)又はMVARCHAR(n)

    MVARCHAR(n)

    NCHAR(n)又はNVARCHAR(n)

    NVARCHAR(n)

  9. 結果のデータ型が文字列型の場合,引数1の文字集合が結果の文字集合となります。

  10. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数1又は引数2の値式がナル値であれば,結果もナル値になります。

  11. 引数2を省略した場合は,次に示す値を仮定します。

    表2‒69 引数2を省略した場合の仮定値

    引数1のデータ型

    引数2を省略した場合の仮定値

    CHAR(n)又はVARCHAR(n)

    半角空白1文字からなる文字列

    MCHAR(n)又はMVARCHAR(n)

    半角空白と全角空白からなる文字列

    NCHAR(n)又はNVARCHAR(n)

    全角空白1文字からなる文字列

(d) 使用例

LTRIMの使用例を次に示します。

  LTRIM('abcabcabdata base', 'abc')   ==> 'data base'
  LTRIM('    data base')              ==> 'data base'

(32) LTRIMSTR

(a) 機能

引数1の文字列の左から,引数2で指定された文字列と一致する部分文字列を,一致しなくなるまで繰り返し取り除きます。

(b) 形式

 〔MASTER.〕LTRIMSTR(引数1,引数2)

(c) 規則

  1. 引数1及び引数2に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 値式に指定できるものを次に示します。

    • 文字列定数,混在文字列定数,又は各国文字列定数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 連結演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  4. 指定できる引数のデータ型の組み合わせを次の表に示します。

    表2‒70 システム定義スカラ関数LTRIMSTRの引数のデータ型の組み合わせ

    引数1のデータ型

    引数2のデータ型

    指定可否

    CHAR,又はVARCHAR

    CHAR,又はVARCHAR

    MCHAR,又はMVARCHAR

    MCHAR,又はMVARCHAR

    NCHAR,又はNVARCHAR

    NCHAR,又はNVARCHAR

    上記以外のデータ型の組み合わせ

    ×

    (凡例)

    ○:指定できます。

    ×:指定できません。

  5. 引数1及び引数2のデータ型が両方とも文字列型の場合,値式の文字集合は同じにしてください。

  6. 引数2の最大長を次の表に示します。

    表2‒71 システム定義スカラ関数LTRIMSTRの引数2の最大長

    引数1(及び引数2)のデータ型

    引数2の最大長

    CHAR

    又は

    VARCHAR

    既定文字集合,及び文字集合(UTF16以外)

    255

    文字集合(UTF16)

    510

    MCHAR又はMVARCHAR

    255

    NCHAR又はNVARCHAR

    127

  7. 結果のデータ型を次の表に示します。

    表2‒72 システム定義スカラ関数LTRIMSTRの結果のデータ型

    引数1(及び引数2)のデータ型

    結果のデータ型

    CHAR(n)又はVARCHAR(n)

    VARCHAR(n)

    MCHAR(n)又はMVARCHAR(n)

    MVARCHAR(n)

    NCHAR(n)又はNVARCHAR(n)

    NVARCHAR(n)

  8. 結果のデータ型が文字列型の場合,引数1の文字集合が結果の文字集合となります。

  9. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数1又は引数2の値式がナル値であれば,結果もナル値になります。

(d) 使用例

LTRIMSTRの使用例を次に示します。

  LTRIMSTR('abcabcabdata base', 'abc')   ==> 'abdata base'

(33) MIDNIGHTSECONDS

(a) 機能

引数で指定された時刻を,深夜0時からの秒数で返します。

(b) 形式

 〔MASTER.〕MIDNIGHTSECONDS(引数)

(c) 規則

  1. 引数に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 値式に指定できるものを次に示します。

    • CURRENT_TIME値関数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 時刻演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  4. 引数のデータ型はTIMEにしてください。

  5. 結果のデータ型はINTEGERになります。

  6. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数の値式がナル値であれば,結果もナル値になります。

  7. 結果は,次の計算式から求められます。

    結果=(((引数の時×60)+引数の分)×60)+引数の秒

(d) 使用例

MIDNIGHTSECONDSの使用例を次に示します。

  MIDNIGHTSECONDS(TIME('23:59:59'))   ==> 86399
  MIDNIGHTSECONDS(TIME('14:14:14'))   ==> 51254

(34) MONTHNAME

(a) 機能

引数で指定した日付の,月の名前を示す文字列('January','February'などの英語の文字列)を返します。

(b) 形式

 〔MASTER.〕MONTHNAME(引数)

(c) 規則

  1. 引数に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 値式に指定できるものを次に示します。

    • CURRENT_DATE値関数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 日付演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  4. 引数のデータ型はDATEにしてください。

  5. 結果のデータ型はVARCHAR(18)になります。

  6. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数の値式がナル値であれば,結果もナル値になります。

  7. 結果の文字集合は既定の文字集合となります。

(d) 使用例

MONTHNAMEの使用例を次に示します。

  MONTHNAME(DATE('1999-01-01'))   ==> 'January'
  MONTHNAME(DATE('1999-02-28'))   ==> 'February'
  MONTHNAME(DATE('1999-03-03'))   ==> 'March'
  MONTHNAME(DATE('1999-04-01'))   ==> 'April'
  MONTHNAME(DATE('1999-05-05'))   ==> 'May'
  MONTHNAME(DATE('1999-06-07'))   ==> 'June'
  MONTHNAME(DATE('1999-07-07'))   ==> 'July'
  MONTHNAME(DATE('1999-08-15'))   ==> 'August'
  MONTHNAME(DATE('1999-09-23'))   ==> 'September'
  MONTHNAME(DATE('1999-10-10'))   ==> 'October'
  MONTHNAME(DATE('1999-11-11'))   ==> 'November'
  MONTHNAME(DATE('1999-12-31'))   ==> 'December'

(35) MONTHS_BETWEEN

(a) 機能

引数で指定した二つの日付間の月数を,実数(FLOAT型)で返します。

(b) 形式

 〔MASTER.〕MONTHS_BETWEEN(引数1,引数2)

(c) 規則

  1. 引数1及び引数2に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 値式に指定できるものを次に示します。

    • CURRENT_DATE値関数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 日付演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  4. 引数1及び引数2のデータ型はDATEにしてください。

  5. 結果のデータ型はFLOATになります。

  6. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数1又は引数2の値式がナル値であれば,結果もナル値になります。

  7. MONTHS_BETWEEN(日付1,日付2)の結果の月数は,次の規則に従い計算されます。

    • 日付1<日付2の場合

      結果=−MONTHS_BETWEEN(日付2,日付1)

    • 日付1≧日付2の場合

      mを0以上の整数とし,日付4≦日付1<日付3を満たす(日付2+mか月)の日付,及び(日付2+(m+1)か月)の日付を,それぞれ日付4及び日付3とします。

      日付4と日付1の間の日数(DAYS(日付1)−DAYS(日付4)),及び日付4と日付3の間の日数(DAYS(日付3)−DAYS(日付4))を,それぞれd1及びd2とします。d2の値は,28,29,30,又は31のどれかになります。

      結果の月数は,(m+d1÷d2)か月になります。

    これらの日付1,日付2,日付3,及び日付4の関係を次の図に示します。

    図2‒7 日付1,日付2,日付3,及び日付4の関係(MONTHS_BETWEEN)

    [図データ]

(d) 使用例

MONTHS_BETWEENの使用例を次に示します。

  MONTHS_BETWEEN(DATE('1999-07-10'), DATE('1999-06-10'))
    ==> 1
  MONTHS_BETWEEN(DATE('1999-07-11'), DATE('1999-06-10'))
    ==> 1.032258…
  MONTHS_BETWEEN(DATE('1999-06-11'), DATE('1999-05-10'))
    ==> 1.033333…
  MONTHS_BETWEEN(DATE('1999-02-11'), DATE('1999-01-10'))
    ==> 1.035714…
  MONTHS_BETWEEN(DATE('2000-02-11'), DATE('2000-01-10'))
    ==> 1.034482…
  MONTHS_BETWEEN(DATE('1999-09-09'), DATE('1999-06-10'))
    ==> 2.967741…
  MONTHS_BETWEEN(DATE('1999-06-10'), DATE('1999-09-09'))
    ==> -2.967741…

(36) NEXT_DAY

(a) 機能

引数1で指定した日付よりも後で最も近い,引数2の整数で指定した曜日の日付を返します。

(b) 形式

 〔MASTER.〕NEXT_DAY(引数1,引数2)

(c) 規則

  1. 引数1及び引数2に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 引数1の値式に指定できるものを次に示します。

    • CURRENT_DATE値関数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 日付演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 引数2の値式に指定できるものを次に示します。

    • 整数定数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 四則演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  4. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  5. 引数1のデータ型はDATEにしてください。引数2のデータ型はINTEGER又はSMALLINTにしてください。

  6. 結果のデータ型はDATEになります。

  7. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数1又は引数2の値式がナル値であれば,結果もナル値になります。

  8. 引数2で指定した整数値の意味を次の表に示します。

    表2‒73 曜日を表す引数2 の整数値の意味

    引数2の整数値

    意味(曜日)

    1

    日曜日(Sunday)

    2

    月曜日(Monday)

    3

    火曜日(Tuesday)

    4

    水曜日(Wednesday)

    5

    木曜日(Thursday)

    6

    金曜日(Friday)

    7

    土曜日(Saturday)

  9. 関数の結果が,結果のデータ型で表現できない値ならば,オーバフローエラーになります。なお,オーバフローエラー抑止が設定されている場合の結果については,「オーバフローエラー抑止が設定されている場合の演算結果」を参照してください。

(d) 使用例

NEXT_DAYの使用例を次に示します。

  NEXT_DAY(DATE('1999-06-10'), 1)   ==> '1999-06-13'
  NEXT_DAY(DATE('1999-06-10'), 4)   ==> '1999-06-16'
  NEXT_DAY(DATE('1999-06-10'), 5)   ==> '1999-06-17'
  NEXT_DAY(DATE('1999-06-10'), 6)   ==> '1999-06-11'
  NEXT_DAY(DATE('1999-06-10'), 7)   ==> '1999-06-12'
    なお,'1999-06-10'は木曜日です。

(37) NUMEDIT

(a) 機能

引数1で指定した数値を,引数2で指定した形式の文字列表現に編集します。

(b) 形式

 〔MASTER.〕NUMEDIT(引数1,引数2)

(c) 規則

  1. 引数1及び引数2に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 引数1の値式に指定できるものを次に示します。

    • 数定数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 四則演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 引数2の値式に指定できるものを次に示します。

    • 文字列定数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 連結演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  4. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  5. 引数1のデータ型は数データ型にしてください。

  6. 引数2のデータ型は文字列型(CHAR又はVARCHAR)にしてください。また,引数2の値の長さは250バイト以下にしてください。

  7. 引数2のデータ型の文字集合はUTF16以外にしてください。引数2に文字集合がUTF16の文字データ型を指定する場合,CAST指定を用いて既定文字集合の文字データ型に変換してください。

  8. 結果のデータ型はVARCHAR(255)になります。

  9. 結果の文字集合は,引数2の文字集合となります。

  10. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数1又は引数2の値式がナル値であれば,結果もナル値になります。

  11. 引数2の値は,次の形式で指定してください。

      〔"文字列"〕〔+〕
           {〔{<|>}〕{9|0|,|"文字列"}…〔.{9|0|,|"文字列"}…〕
             |{E|e}.整数 〔 "文字列" 〕}
    "文字列"

    引用符で囲まれた文字列は,その文字列自身を表現します。

    引用符で囲まれた文字列中で引用符そのものを指定する場合は,連続する二つの引用符で表現します。

    〔+〕は,符号の表現方法を指定します。

    '+'は,引数1が負の値ならばマイナス符号(−),そうでなければプラス符号(+)で表現します。

    '+'を省略すると,引数1が負の値ならば,マイナス符号(−),そうでなければ,一つの空白文字で表現します。

    {<|>}

    {<|>}は,数値の文字表現の詰め込み方を指定します。

    '<'を指定すると,すべての空白文字を取り除き,文字表現を左にシフトします。

    '>'を指定すると,すべての空白文字を取り除き,文字表現を右にシフトし,左側に空白文字を埋めます。

    '<','>'のどちらも指定しない場合,文字表現をシフトしません。

    {9|0|,|"文字列"}…〔.{9|0|,|"文字列"}〕…

    '9','0'は数値の一つのけたを表現し,引数1の数値に対応するけたを編集します。

    '9'及び'0'の総個数は,編集後の数値の精度を示します。

    '0'を指定すると,その'0'の編集結果は対応するけたの数字になります。

    ','を指定すると,その','の両側の編集結果が数字ならば,','の編集結果はそれ自身になり,そうでなければ一つの空白文字になります。

    '.' は,小数点を表現します。

    '.'より後の'9'及び'0'の総個数は,編集後の数値の位取りを示します。

    '.'より前に'9'を指定すると,対応するけたが0で,その'9'が最初のけたである,又はその'9'の編集結果の左の編集結果が数字でない(ただし,コンマに対応するときは除く)の場合,その'9'の編集結果は一つの空白文字になります。そうでなければ,その'9'の編集結果は対応するけたの数字になります。

    '.'より後に'9'を指定すると,対応するけたが0で,その'9'が最後のけたである,又はその'9'の編集結果の右の編集結果が数字でない(ただし,コンマに対応するときは除く)の場合,その'9'の編集結果は空(0個)の文字になります。そうでなければ,その'9'の編集結果は対応するけたの数字になります。

    {E|e}.整数

    {E|e}.整数は,浮動小数点数形式の書式で指定します。

    編集結果は整数で指定された仮数の位取りを持つ,浮動小数点数形式になります。仮数の位取りは,30未満にしてください。

  12. 引数1の値が引数2で指定された形式で表現できない値ならば,オーバフローエラーになります。なお,オーバフローエラー抑止が設定されている場合の結果については,「オーバフローエラー抑止が設定されている場合の演算結果」を参照してください。

  13. 編集によって下位のけたが失われる場合,結果の値は丸められます。

(d) 使用例

NUMEDITの使用例を次に示します。

  NUMEDIT(1234567.89, '99,999,990.00"$"')   ==> '  1,234,567.89$'
  NUMEDIT(1000, '99,999,990.00"$"')         ==> '      1,000.00$'
  NUMEDIT(1234567.89, '" $"99,999,990.00')  ==> ' $  1,234,567.89'
  NUMEDIT(1000, '" $"99,999,990.00')        ==> ' $      1,000.00'
  NUMEDIT(1234567.89, '"$"+99,999,990,00')  ==> '$+ 1,234,567.89'
  NUMEDIT(-1000, '"$"+99,999,990.00')       ==> '$-     1,000.00'
  NUMEDIT(1234567.89, '"$">99,999,990.00')  ==> '  $1,234,567.89'
  NUMEDIT(1000, '"$">99,999,990.00')        ==> '      $1,000.00'
  NUMEDIT(1234567.89, '"$"<99,999,990.00')  ==> '$1,234,567.89'
  NUMEDIT(1000, '"$"<99,999,990.00')        ==> '$1,000.00'
  NUMEDIT(0.5, '"$"<99,999,990.00')         ==> '$0.50'
  NUMEDIT(1234567.89, '+E.10"$"')           ==> '+1.2345678900E+0.6$'
  NUMEDIT(1234567.89, '"$"+e.10')           ==> '$+1.2345678900e+0.6'

(38) NVL

(a) 機能

ナル値をナル値でない値に変換します。

(b) 形式

 NVL(引数1,引数2)

(c) 規則

  1. 引数1及び引数2に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 値式に指定できるものを次に示します。

    • 定数

    • USER値関数

    • CURRENT_DATE値関数

    • CURRENT_TIME値関数

    • CURRENT_TIMESTAMP値関数

    • 列指定

    • SQL変数,又はSQLパラメタ

    • 四則演算

    • 日付演算

    • 時刻演算

    • 連結演算

    • 集合関数

    • スカラ関数

    • CASE式

    • CAST指定

    • 埋込み変数,又は?パラメタ

    • 関数呼出し

    • スカラ副問合せ

  3. 引数1,及び引数2の演算結果が次に示すデータ型の場合は指定できません。

    • LOB

    • BOOLEAN

    • 抽象データ型

  4. 引数1,及び引数2に,NULLは指定できません。

  5. 引数1,及び引数2にバイナリデータを指定する場合は,実長が32,001バイト以上の値は指定できません。

  6. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  7. 引数1,及び引数2のデータ型は,それぞれ比較できるデータ型にしてください。

    比較できるデータ型については,「データ型」を参照してください。

    ただし,次に示すデータは比較できません。

    • 日付データと日付データの文字列表現

    • 時刻データと時刻データの文字列表現

    • 時刻印データと時刻印データの文字列表現

    • 日間隔データと日間隔データの10進数表現

    • 時間隔データと時間隔データの10進数表現

    • バイナリデータと16進文字列定数

  8. 結果の値は,引数1がナル値でない場合は引数1になり,引数1がナル値の場合は引数2になります。

  9. 結果のデータ型,及びデータ長は次のとおりです。

    <文字データ,各国文字データ,混在文字データの場合>

    • 結果のデータ型は,可変長データになります。

    • 結果のデータ長は,一番長いデータ長を持つ引数のデータ長になります。

    • 引数に文字データと混在文字データが含まれる場合の結果のデータ型は,混在文字データになります。

    <バイナリデータの場合>

    • 結果のデータ型は,バイナリデータになります。

    • 結果のデータ長は,一番長いデータ長を持つ引数のデータ長になります。ただし,一番長いデータ長が32,001バイト以上の場合は,結果のデータ長は32,000バイトになります。

    <文字データ,各国文字データ,混在文字データ,バイナリデータ以外の場合>

    結果のデータ型,及びデータ長は,集合演算(UNION ALL,又はEXCEPT ALL)の結果のデータ型,及びデータ長と同じになります。詳細については,「問合せ式」を参照してください。

  10. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数1及び引数2の両方ともナル値であれば,結果もナル値になります。

  11. 引数1,及び引数2が文字データ型の場合,文字集合は同じにしてください。

(d) 使用例

表T1のC1の値を取得する際,C1がナル値の場合は0を取得します。

  SELECT NVL(C1,0) FROM T1

(39) PI

(a) 機能

円周率πの値を返します。

(b) 形式

 〔MASTER.〕PI()

(c) 規則

  1. 結果のデータ型は,FLOAT型になります。

  2. 結果の値は,非ナル値制約なし(ナル値を許します)になります。ただし,常に円周率の値が返されるため,ナル値が返されることはありません。

(d) 使用例

PIの使用例を次に示します。

  PI()   ==> 3.14159265358979323846

(40) POSSTR

(a) 機能

引数1で指定した文字列中の,引数3で指定した文字位置以降に,引数2で指定した部分文字列が引数4で指定した回数(nd)以上出現した場合,その回数nd番目の部分文字列の開始位置を文字単位で返します。

(b) 形式

 〔MASTER.〕POSSTR(引数1,引数2〔,引数3〔,引数4〕〕)

(c) 規則

  1. 引数1,引数2,引数3,及び引数4に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 引数1及び引数2の値式に指定できるものを次に示します。

    • 文字列定数,混在文字列定数,又は各国文字列定数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 連結演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 引数3及び引数4の値式に指定できるものを次に示します。

    • 整数定数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 四則演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  4. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  5. 引数1及び引数2に指定できる引数のデータ型の組み合わせを次の表に示します。

    表2‒74 システム定義スカラ関数POSSTRの引数のデータ型の組み合わせ

    引数1のデータ型

    引数2のデータ型

    指定可否

    CHAR,又はVARCHAR

    CHAR,又はVARCHAR

    MCHAR,又はMVARCHAR

    MCHAR,又はMVARCHAR

    NCHAR,又はNVARCHAR

    NCHAR,又はNVARCHAR

    上記以外のデータ型の組み合わせ

    ×

    (凡例)

    ○:指定できます。

    ×:指定できません。

  6. 引数1及び引数2のデータ型が両方とも文字列データ型(CHAR又はVARCHAR)の場合,値式の文字集合は同じにしてください。

  7. 引数2の値の最大長を次の表に示します。

    表2‒75 システム定義スカラ関数POSSTR の引数2の最大長

    引数1(及び引数2)のデータ型

    引数2の最大長

    CHAR

    又は

    VARCHAR

    既定文字集合,及び文字集合(UTF16以外)

    255

    文字集合(UTF16)

    510

    MCHAR又はMVARCHAR

    255

    NCHAR又はNVARCHAR

    127

  8. 引数3及び引数4のデータ型は,INTEGER又はSMALLINTにしてください。

  9. 結果のデータ型はINTEGERになります。

  10. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数の値式のどれかがナル値であれば,結果もナル値になります。

  11. 引数3及び引数4に指定できる値の範囲を次の表に示します。

    表2‒76 システム定義スカラ関数POSSTR の引数3及び引数4の値の範囲

    引数1(及び引数2)のデータ型

    引数3の値の範囲

    引数4の値の範囲

    CHAR(n)

    又は

    VARCHAR(n)

    既定文字集合,及び文字集合(UTF16以外)

    1〜n

    1〜n

    文字集合(UTF16)

    1〜n/2

    1〜n/2

    MCHAR(n)又はMVARCHAR(n)

    1〜n

    1〜n

    NCHAR(n)又はNVARCHAR(n)

    1〜n

    1〜n

  12. 引数3を省略すると,1が仮定されます。また,引数4を省略しても1が仮定されます。

  13. 引数2の文字列の長さ(文字数)が0の場合,結果は引数3の値になります。

  14. 引数2の文字列と一致する部分文字列が,引数1の文字列中の引数3の文字位置(m)以降に,引数4で指定した回数(nd)以上出現する場合,結果はm以上の値で,nd番目の部分文字列が開始する前の引数1の文字列内の文字数に1を加えた値になります。

    なお,引数2の文字列と一致するこれらの部分文字列は,重ならないものとします。引数2の文字列と一致する部分文字列が,引数1の文字列中の引数3の文字位置(m)以降に,引数4で指定した回数(nd)以上出現しない場合,結果は0になります。

(d) 使用例

POSSTRの使用例を次に示します。

  POSSTR('data base system', 'a')        ==> 2
  POSSTR('data base system', '')         ==> 1 (引数2は長さ0の文字列)
  POSSTR('data base system', 'a', 5)     ==> 7
  POSSTR('data base system', 'st')       ==> 13
  POSSTR('data base system', 'a', 1, 3)  ==> 7
  POSSTR('data base system', 'manager')  ==> 0

(41) POWER

(a) 機能

引数1の値のn乗を返します。なお,nは引数2の値とします。

(b) 形式

 〔MASTER.〕POWER(引数1,引数2)

(c) 規則

  1. 引数1及び引数2に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 値式に指定できるものを次に示します。

    • 数定数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 四則演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  4. 引数のデータ型は数データ型にしてください。

  5. 結果のデータ型を次の表に示します。

    表2‒77 システム定義スカラ関数POWERの結果のデータ型

    引数1のデータ型

    引数2のデータ型

    SMALLINT又はINTEGER

    DECIMAL(p,s),SMALLFLT,又はFLOAT

    SMALLINT又は

    INTEGER

    INTEGER

    FLOAT

    DECIMAL(p,s),SMALLFLT,又はFLOAT

    FLOAT

    FLOAT

  6. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数1又は引数2の値式がナル値であれば,結果もナル値になります。

  7. 引数1に負の値を指定し,引数2に整数でない値を指定すると,定義域エラー(domain error occurs)になります。

  8. 引数1に値0を指定し,引数2に正でない値を指定すると,0除算(division by zero)になります。なお,オーバフローエラー抑止が設定されている場合の結果については,「オーバフローエラー抑止が設定されている場合の演算結果」を参照してください。

  9. 関数の結果が,結果のデータ型で表現できない値ならば,オーバフローエラーになります。なお,オーバフローエラー抑止が設定されている場合の結果については,「オーバフローエラー抑止が設定されている場合の演算結果」を参照してください。

(42) QUARTER

(a) 機能

引数2で指定した月,及び引数3で指定した日を各年度の開始の月日として,引数1で指定した日付が第何四半期かを示す1〜4の整数で返します。

(b) 形式

 〔MASTER.〕QUARTER(引数1〔,引数2〔,引数3〕〕)

(c) 規則

  1. 引数1,引数2,及び引数3に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 引数1の値式に指定できるものを次に示します。

    • CURRENT_DATE値関数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 日付演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 引数2及び引数3の値式に指定できるものを次に示します。

    • 整数定数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 四則演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  4. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  5. 引数1のデータ型はDATEにしてください。

  6. 引数2及び引数3のデータ型は,INTEGER又はSMALLINTにしてください。

  7. 結果のデータ型はINTEGERになります。

  8. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数の値式のどれかがナル値であれば,結果もナル値になります。

  9. 引数2を省略すると,1が仮定されます。引数2に指定できる値の範囲は,1〜12です。

  10. 引数3を省略すると,1が仮定されます。引数3に指定できる値の範囲は,引数2の値が2の場合は,1〜29です。それ以外の場合は,1〜(引数2で指定した月の最終日)です。

  11. 結果は,次の規則によって求められます。

    • 引数1の日<引数3の場合

      月数=引数1の月−引数2−1

    • 引数1の月≧引数3の場合

      月数=引数1の月−引数2

    • 月数<0の場合

      結果=(月数+12)÷4+1

    • 月数≧0の場合

      結果=月数÷4+1

(d) 使用例

QUARTERの使用例を次に示します。

  QUARTER(DATE('1999-01-01'))          ==> 1
  QUARTER(DATE('1999-09-10'))          ==> 3
  QUARTER(DATE('1999-12-31'))          ==> 4
  QUARTER(DATE('1999-04-01'), 4)       ==> 1
  QUARTER(DATE('1999-09-10'), 4)       ==> 2
  QUARTER(DATE('1999-03-31'), 4)       ==> 4
  QUARTER(DATE('1999-03-21'), 3, 21)   ==> 1
  QUARTER(DATE('1999-09-20'), 3, 21)   ==> 2
  QUARTER(DATE('1999-03-20'), 3, 21)   ==> 4

(43) RADIANS

(a) 機能

引数で指定した角度を,度数からラジアンに変換します。

(b) 形式

 〔MASTER.〕RADIANS(引数)

(c) 規則

  1. 引数に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 値式に指定できるものを次に示します。

    • 数定数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 四則演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  4. 引数のデータ型は数データ型にしてください。

  5. 結果のデータ型はFLOATになります。

  6. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数の値式がナル値であれば,結果もナル値になります。

(44) REPLACE(REPLACE_LONG)

(a) 機能

引数1の文字列中の,引数2の文字列と一致するすべての部分文字列を,引数3の文字列に置き換えます。

(b) 形式

 〔MASTER.〕REPLACE(引数1,引数2〔,引数3〕)
 〔MASTER.〕REPLACE_LONG(引数1,引数2,引数3)

(c) 規則

  1. 引数1,引数2,及び引数3に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 値式に指定できるものを次に示します。

    • 文字列定数,混在文字列定数,又は各国文字列定数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 連結演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  4. 指定できる引数のデータ型の組み合わせを次の表に示します。

    表2‒78 システム定義スカラ関数REPLACE(引数3を省略する場合)の引数のデータ型の組み合わせ

    引数1のデータ型

    引数2のデータ型

    指定可否

    CHAR,又はVARCHAR

    CHAR,又はVARCHAR

    MCHAR,又はMVARCHAR

    MCHAR,又はMVARCHAR

    NCHAR,又はNVARCHAR

    NCHAR,又はNVARCHAR

    上記以外のデータ型の組み合わせ

    ×

    (凡例)

    ○:指定できます。

    ×:指定できません。

    表2‒79 システム定義スカラ関数REPLACE(引数3を指定する場合),REPLACE_LONGの引数のデータ型の組み合わせ

    引数1のデータ型

    引数2のデータ型

    引数3のデータ型

    指定可否

    CHAR,又はVARCHAR

    CHAR,又はVARCHAR

    CHAR,又はVARCHAR

    MCHAR,又はMVARCHAR

    MCHAR,又はMVARCHAR

    MCHAR,又はMVARCHAR

    NCHAR,又はNVARCHAR

    NCHAR,又はNVARCHAR

    NCHAR,又はNVARCHAR

    上記以外のデータ型の組み合わせ

    ×

    (凡例)

    ○:指定できます。

    ×:指定できません。

  5. 引数2及び引数3の値の最大長を次の表に示します。

    表2‒80 システム定義スカラ関数REPLACE,REPLACE_LONGの引数2,引数3の最大長

    引数1(及び引数2,引数3)のデータ型

    引数2及び引数3の最大長

    CHAR

    又は

    VARCHAR

    既定文字集合,及び文字集合(UTF16以外)

    255

    文字集合(UTF16)

    510

    MCHAR又はMVARCHAR

    255

    NCHAR又はNVARCHAR

    127

  6. 引数1,引数2,及び引数3のデータ型が文字列型(CHAR又はVARCHAR)の場合,引数に指定する値式の文字集合は同じにしてください。

  7. 引数3を省略すると,空の文字列を仮定し,引数1の文字列中から引数2の文字列と一致するすべての部分文字列を削除します。

  8. 結果のデータ型を次に示します。

    表2‒81 システム定義スカラ関数REPLACEの結果のデータ型

    引数1のデータ型

    結果のデータ型

    CHAR(n)又はVARCHAR(n)

    VARCHAR(n)

    MCHAR(n)又はMVARCHAR(n)

    MVARCHAR(n)

    NCHAR(n)又はNVARCHAR(n)

    NVARCHAR(n)

    表2‒82 システム定義スカラ関数REPLACE_LONGの結果のデータ型

    引数1のデータ型

    結果のデータ型

    CHAR(n)又はVARCHAR(n)

    VARCHAR(32000)

    MCHAR(n)又はMVARCHAR(n)

    MVARCHAR(32000)

    NCHAR(n)又はNVARCHAR(n)

    NVARCHAR(16000)

  9. 結果のデータ型が文字列型の場合,引数1の文字集合が結果の文字集合となります。

  10. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数の値式のどれかがナル値であれば,結果もナル値になります。

  11. 結果の長さは,結果のデータ型の最大長を超えないようにしてください。結果の長さが引数1の長さより長くなる場合は,REPLACE_LONGを使用してください。

(d) 使用例

REPLACEの使用例を次に示します。

  REPLACE('a big dog and a small dog', 'dog', 'cat')
    ==> 'a big cat and a small cat'
  REPLACE('a big dog and a small dog', 'big ')
    ==> 'a dog and a small dog'

(45) REVERSESTR

(a) 機能

引数で指定した文字列中の,左右を反転した文字列を返します。

(b) 形式

 〔MASTER.〕REVERSESTR(引数)

(c) 規則

  1. 引数に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 値式に指定できるものを次に示します。

    • 文字列定数,混在文字列定数,又は各国文字列定数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 連結演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  4. 引数のデータ型は,次のどれかを指定してください。

    • 任意の文字集合の文字列型(CHAR,VARCHAR)

    • 各国文字列型(NCHAR,NVARCHAR)

    • 混在文字列型(MCHAR,MVARCHAR)

  5. 結果のデータ型を次の表に示します。

    表2‒83 システム定義スカラ関数REVERSESTRの結果のデータ型

    引数のデータ型

    結果のデータ型

    CHAR(n)又はVARCHAR(n)

    VARCHAR(n)

    MCHAR(n)又はMVARCHAR(n)

    MVARCHAR(n)

    NCHAR(n)又はNVARCHAR(n)

    NVARCHAR(n)

  6. 結果のデータ型が文字列型の場合,引数の文字集合が結果の文字集合となります。

  7. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数の値式がナル値であれば,結果もナル値になります。

(d) 使用例

REVERSESTRの使用例を次に示します。

  REVERSESTR('data base')       ==> 'esab atad'
  REVERSESTR('esab atad')       ==> 'data base'
  REVERSESTR('   esab atad')    ==> 'data base   '

(46) RIGHTSTR

(a) 機能

引数1の文字列の最後(最も右)から,引数2で指定した文字数の部分文字列を抽出します。

(b) 形式

 〔MASTER.〕RIGHTSTR(引数1,引数2)

(c) 規則

  1. 引数1及び引数2に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 引数1の値式に指定できるものを次に示します。

    • 文字列定数,混在文字列定数,又は各国文字列定数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 連結演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 引数2の値式に指定できるものを次に示します。

    • 整数定数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 四則演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  4. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  5. 引数1のデータ型は,次のどれかを指定してください。

    • 任意の文字集合の文字列型(CHAR,VARCHAR)

    • 各国文字列型(NCHAR,NVARCHAR)

    • 混在文字列型(MCHAR,MVARCHAR)

  6. 引数2のデータ型は,INTEGER又はSMALLINTにしてください。

  7. 引数2に指定できる値の範囲を次の表に示します。

    表2‒84 システム定義スカラ関数RIGHTSTRの引数2の値の範囲

    引数1のデータ型

    引数2の値の範囲

    CHAR(n)

    又は

    VARCHAR(n)

    既定文字集合,及び文字集合(UTF16以外)

    0〜n

    文字集合(UTF16)

    0〜n/2

    MCHAR(n)又はMVARCHAR(n)

    0〜n

    NCHAR(n)又はNVARCHAR(n)

    0〜n

  8. 結果のデータ型を次の表に示します。

    表2‒85 システム定義スカラ関数RIGHTSTRの結果のデータ型

    引数1のデータ型

    結果のデータ型

    CHAR(n)又はVARCHAR(n)

    VARCHAR(n)

    MCHAR(n)又はMVARCHAR(n)

    MVARCHAR(n)

    NCHAR(n)又はNVARCHAR(n)

    NVARCHAR(n)

  9. 結果のデータ型が文字列型の場合,引数1の文字集合が結果の文字集合となります。

  10. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数1又は引数2の値式がナル値であれば,結果もナル値になります。

  11. 引数1の文字列の値の文字数が,引数2で指定した文字数よりも少ない場合,結果は引数1と同じ値になります。

(d) 使用例

RIGHTSTRの使用例を次に示します。

  RIGHTSTR('data base system', 6)    ==> 'system'
  RIGHTSTR('data system', 0)         ==> ''    (長さ0の文字列)

(47) ROUND

(a) 機能

引数1の値の,小数点以下nけたより後のけた(10の-n乗未満のけた)を丸めます。なお,nは引数2の値とします。

引数3を指定すると,引数1の10の-n-1乗の位の値が,引数3の値以上ならば切り上げ,そうでなければ切り捨てます。

(b) 形式

 〔MASTER.〕ROUND(引数1〔,引数2〔,引数3〕〕)

(c) 規則

  1. 引数1,引数2,及び引数3に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 値式に指定できるものを次に示します。

    • 数定数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 四則演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  4. 引数1のデータ型は数データ型にしてください。引数2及び引数3のデータ型は,INTEGER又はSMALLINTにしてください。

  5. 引数2を省略すると0が仮定されます。引数2に指定できる値の範囲を次の表に示します。

    表2‒86 システム定義スカラ関数ROUNDの引数2に指定できる値の範囲

    結果のデータ型

    引数2に指定できる値の範囲

    INTEGER

    −9〜0

    DECIMAL(p, s)

    −(p−s−1)〜s

    FLOAT

    −307〜323

  6. 結果のデータ型を次の表に示します。

    表2‒87 システム定義スカラ関数ROUNDの結果のデータ型

    引数1のデータ型

    結果のデータ型

    SMALLINT

    INTEGER

    INTEGER

    INTEGER

    DECIMAL(p, s)

    DECIMAL(p, s)

    SMALLFLT

    FLOAT

    FLOAT

    FLOAT

  7. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数1,引数2,又は引数3の値式がナル値であれば,結果もナル値になります。

  8. 引数3を省略すると,5が仮定されます。引数3に指定できる値の範囲は,1〜9です。引数1の10の−n−1乗の位の値が引数3の値以上ならば,切り上げ,そうでなければ切り捨てます。

  9. 関数の結果が,結果のデータ型で表現できない値ならば,オーバフローエラーになります。なお,オーバフローエラー抑止が設定されている場合の結果については,「オーバフローエラー抑止が設定されている場合の演算結果」を参照してください。

(48) ROUNDMONTH

(a) 機能

引数1で指定された日付を,その日付の日の部分を端数として丸めた日付を返します。

20日締めで年月を求める場合などに利用できます。

(b) 形式

 〔MASTER.〕ROUNDMONTH(引数1〔,引数2〕)

(c) 規則

  1. 引数1及び引数2に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 引数1の値式に指定できるものを次に示します。

    • CURRENT_DATE値関数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 日付演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 引数2の値式に指定できるものを次に示します。

    • 整数定数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 四則演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  4. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  5. 引数1のデータ型はDATEにしてください。引数2のデータ型は,INTEGER又はSMALLINTにしてください。

  6. 結果のデータ型はDATEになります。

  7. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数1又は引数2の値式がナル値であれば,結果もナル値になります。

  8. 引数2を省略すると,16が仮定されます。引数2に指定できる値の範囲は,1〜32です。

  9. 結果は,次の規則によって求められます。

    • 引数1の日<引数2の場合

      結果の年=引数1の年

      結果の月=引数1の月

      結果の日=1

    • 引数1の日≧引数2の場合

      ・引数1の月<12の場合

       結果の年=引数1の年

       結果の月=引数1の月+1

       結果の日=1

      ・引数1の月=12の場合

       結果の年=引数1の年+1

       結果の月=1

       結果の日=1

  10. 関数の結果が,0001年01月01日〜9999年12月31日の範囲でないならば,オーバフローエラーになります。なお,オーバフローエラー抑止が設定されている場合の結果については,「オーバフローエラー抑止が設定されている場合の演算結果」を参照してください。

(d) 使用例

ROUNDMONTHの使用例を次に示します。

  ROUNDMONTH(DATE('1999-08-15'))       ==> '1999-08-01'
  ROUNDMONTH(DATE('1999-08-16'))       ==> '1999-09-01'
  ROUNDMONTH(DATE('1999-09-20'), 21)   ==> '1999-09-01'
  ROUNDMONTH(DATE('1999-09-21'), 21)   ==> '1999-10-01'
  ROUNDMONTH(DATE('1999-12-21'), 21)   ==> '2000-01-01'
  ROUNDMONTH(DATE('1999-03-31'), 32)   ==> '1999-03-01'
  ROUNDMONTH(DATE('2000-02-29'), 29)   ==> '2000-03-01'
  ROUNDMONTH(DATE('2000-03-31'), 29)   ==> '2000-04-01'
  ROUNDMONTH(DATE('9999-12-31'), 26)   ==> オーバフロー

(49) RTRIM

(a) 機能

引数1の文字列の右から,引数2で指定された文字列を構成する文字を取り除きます。引数2で指定された文字列中の文字以外が現れるまで,繰り返し取り除きます。

(b) 形式

 〔MASTER.〕RTRIM(引数1〔,引数2〕)

(c) 規則

  1. 引数1及び引数2に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 値式に指定できるものを次に示します。

    • 文字列定数,混在文字列定数,又は各国文字列定数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 連結演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  4. 引数1のデータ型は,次のどれかを指定してください。

    • 任意の文字集合の文字列型(CHAR,VARCHAR)

    • 各国文字列型(NCHAR,NVARCHAR)

    • 混在文字列型(MCHAR,MVARCHAR)

  5. 引数2を指定する場合,指定できる引数のデータ型の組み合わせを次の表に示します。

    表2‒88 システム定義スカラ関数RTRIMの引数のデータ型の組み合わせ

    引数1のデータ型

    引数2のデータ型

    指定可否

    CHAR,又はVARCHAR

    CHAR,又はVARCHAR

    MCHAR,又はMVARCHAR

    MCHAR,又はMVARCHAR

    NCHAR,又はNVARCHAR

    NCHAR,又はNVARCHAR

    上記以外のデータ型の組み合わせ

    ×

    (凡例)

    ○:指定できます。

    ×:指定できません。

  6. 引数1及び引数2のデータ型が両方とも文字列型(CHAR又はVARCHAR)の場合,引数に指定する値式の文字集合は同じにしてください。

  7. 引数2の値の長さは,文字列型又は混在文字列型の場合は30バイト以下(文字集合がUTF16の文字データ型の場合は60バイト以下),各国文字列型の場合は30文字以下にしてください。

  8. 結果のデータ型を次の表に示します。

    表2‒89 システム定義スカラ関数RTRIMの結果のデータ型

    引数1(及び引数2)のデータ型

    結果のデータ型

    CHAR(n)又はVARCHAR(n)

    VARCHAR(n)

    MCHAR(n)又はMVARCHAR(n)

    MVARCHAR(n)

    NCHAR(n)又はNVARCHAR(n)

    NVARCHAR(n)

  9. 結果のデータ型が文字列型の場合,引数1の文字集合が結果の文字集合となります。

  10. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数1又は引数2の値式がナル値であれば,結果もナル値になります。

  11. 引数2を省略した場合は,次に示す値を仮定します。

    表2‒90 引数2を省略した場合の仮定値

    引数1のデータ型

    引数2を省略した場合の仮定値

    CHAR(n)又はVARCHAR(n)

    半角空白1文字からなる文字列

    MCHAR(n)又はMVARCHAR(n)

    半角空白と全角空白からなる文字列

    NCHAR(n)又はNVARCHAR(n)

    全角空白1文字からなる文字列

(d) 使用例

RTRIMの使用例を次に示します。

  RTRIM('data basebcabcabc', 'abc')   ==> 'data base'
  RTRIM('data base    ')              ==> 'data base'

(50) RTRIMSTR

(a) 機能

引数1の文字列の右から,引数2で指定された文字列と一致する部分文字列を,一致しなくなるまで繰り返し取り除きます。

(b) 形式

 〔MASTER.〕RTRIMSTR(引数1,引数2)

(c) 規則

  1. 引数1及び引数2に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 値式に指定できるものを次に示します。

    • 文字列定数,混在文字列定数,又は各国文字列定数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 連結演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  4. 指定できる引数のデータ型の組み合わせを次の表に示します。

    表2‒91 システム定義スカラ関数RTRIMSTRの引数のデータ型の組み合わせ

    引数1のデータ型

    引数2のデータ型

    指定可否

    CHAR,又はVARCHAR

    CHAR,又はVARCHAR

    MCHAR,又はMVARCHAR

    MCHAR,又はMVARCHAR

    NCHAR,又はNVARCHAR

    NCHAR,又はNVARCHAR

    上記以外のデータ型の組み合わせ

    ×

    (凡例)

    ○:指定できます。

    ×:指定できません。

  5. 引数1及び引数2のデータ型が両方とも文字列型(CHAR又はVARCHAR)の場合,引数に指定する値式の文字集合は同じにしてください。

  6. 引数2の最大長を次の表に示します。

    表2‒92 システム定義スカラ関数RTRIMSTRの引数2の最大長

    引数1(及び引数2)のデータ型

    引数2の最大長

    CHAR

    又は

    VARCHAR

    既定文字集合,及び文字集合(UTF16以外)

    255

    文字集合(UTF16)

    510

    MCHAR又はMVARCHAR

    255

    NCHAR又はNVARCHAR

    127

  7. 結果のデータ型を次の表に示します。

    表2‒93 システム定義スカラ関数RTRIMSTRの結果のデータ型

    引数1(及び引数2)のデータ型

    引数2の最大長

    CHAR(n)又はVARCHAR(n)

    VARCHAR(n)

    MCHAR(n)又はMVARCHAR(n)

    MVARCHAR(n)

    NCHAR(n)又はNVARCHAR(n)

    NVARCHAR(n)

  8. 結果のデータ型が文字列型の場合,引数1の文字集合が結果の文字集合となります。

  9. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数1又は引数2の値式がナル値であれば,結果もナル値になります。

(d) 使用例

RTRIMSTRの使用例を次に示します。

  RTRIMSTR('data basebcabcabc', 'abc')   ==> 'data basebc'

(51) SIGN

(a) 機能

引数の符号(引数が正の値ならば+1,負の値ならば−1,0ならば0)を返します。

(b) 形式

 〔MASTER.〕SIGN(引数)

(c) 規則

  1. 引数に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 値式に指定できるものを次に示します。

    • 数定数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 四則演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  4. 引数のデータ型は数データ型にしてください。

  5. 結果のデータ型を次の表に示します。

    表2‒94 システム定義スカラ関数SIGNの結果のデータ型

    引数1のデータ型

    結果のデータ型

    SMALLINT

    INTEGER

    INTEGER

    INTEGER

    DECIMAL(p,s)

    DECIMAL(1,0)

    SMALLFLT

    FLOAT

    FLOAT

    FLOAT

  6. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数の値式がナル値であれば,結果もナル値になります。

(52) SIN

(a) 機能

ラジアンで角度を指定した引数の,正弦(三角関数SIN)を返します。

(b) 形式

 〔MASTER.〕SIN(引数)

(c) 規則

  1. 引数に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 値式に指定できるものを次に示します。

    • 数定数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 四則演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  4. 引数のデータ型は数データ型にしてください。

  5. 結果のデータ型はFLOATになります。

  6. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数の値式がナル値であれば,結果もナル値になります。

(53) SINH

(a) 機能

引数の双曲線正弦を返します。

(b) 形式

 〔MASTER.〕SINH(引数)

(c) 規則

  1. 引数に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 値式に指定できるものを次に示します。

    • 数定数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 四則演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  4. 引数のデータ型は数データ型にしてください。

  5. 結果のデータ型はFLOATになります。

  6. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数の値式がナル値であれば,結果もナル値になります。

  7. 関数の結果が,結果のデータ型で表現できない値ならば,オーバフローエラーになります。なお,オーバフローエラー抑止が設定されている場合の結果については,「オーバフローエラー抑止が設定されている場合の演算結果」を参照してください。

(54) SQRT

(a) 機能

引数の値の平方根を返します。

(b) 形式

 〔MASTER.〕SQRT(引数)

(c) 規則

  1. 引数に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 値式に指定できるものを次に示します。

    • 数定数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 四則演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  4. 引数のデータ型は数データ型にしてください。

  5. 結果のデータ型はFLOATになります。

  6. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数の値式がナル値であれば,結果もナル値になります。

  7. 引数に負の値を指定すると,定義域エラー(domain error occurs)になります。

(55) STRTONUM

(a) 機能

引数1で指定した数値の文字列表現を,数データ型に変換します。引数2のデータ型がINTEGER又はSMALLINTの場合はINTEGERに,DECIMALの場合は同じ精度・位取りのDECIMALに,FLOAT又はSMALLFLTの場合はFLOATに変換します。

(b) 形式

 〔MASTER.〕STRTONUM(引数1,引数2)

(c) 規則

  1. 引数に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 引数1の値式に指定できるものを次に示します。

    • 文字列定数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 連結演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 引数2の値式に指定できるものを次に示します。

    • 数定数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 四則演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  4. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  5. 引数1のデータ型は,文字列型(CHAR又はVARCHAR)にしてください。また,引数1の文字列の長さは,255バイト以下にしてください。

  6. 引数1のデータ型の文字集合はUTF16以外にしてください。引数1に文字集合がUTF16の文字データ型を指定する場合,CAST指定を用いて既定文字集合の文字データ型に変換してください。

  7. 引数2のデータ型は,数データ型にしてください。

  8. 結果のデータ型を次の表に示します。

    表2‒95 システム定義スカラ関数STRTONUMの結果のデータ型

    引数2のデータ型

    結果のデータ型

    SMALLINT

    INTEGER

    INTEGER

    INTEGER

    DECIMAL(p,s)

    DECIMAL(p,s)

    SMALLFLT

    FLOAT

    FLOAT

    FLOAT

  9. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数1の値式がナル値であれば,結果もナル値になります。引数2の値は,結果に影響しません。

  10. 引数1の文字列の値は,次の形式で指定してください。

    • 引数2のデータ型がINTEGERの場合

      〔空白文字…〕〔+|-〕〔空白文字…〕数字…〔空白文字…〕

    • 引数2のデータ型がDECIMALの場合

      〔空白文字…〕〔+|-〕〔空白文字…〕

       {数字…〔.〔数字…〕〕|.数字…}〔空白文字…〕

    • 引数2のデータ型がFLOATの場合

      〔空白文字…〕〔+|-〕〔空白文字…〕

       {数字…〔.〔数字…〕〕|.数字…}

       〔{E|e}〔+|-〕数字…〕〔空白文字…〕

  11. 関数の結果が,結果のデータ型で表現できない値ならば,オーバフローエラーになります。なお,オーバフローエラー抑止が設定されている場合の結果については,「オーバフローエラー抑止が設定されている場合の演算結果」を参照してください。

  12. 引数2のデータ型がDECIMAL型の場合,データ型の変換で下位のけたがなくなるときは,結果の値は丸められます。

(d) 使用例

STRTONUMの使用例を次に示します。

・引数2がINTEGERの場合
  STRTONUM(' -  1234567  ', 0)
    ==> -1234567 (INTEGER型)
  STRTONUM('  + 1234567890123  ', 0)
    ==> オーバフロー
  STRTONUM('  1234567.89  ', 9)
    ==> INTEGERへの変換の,STRTONUM関数の引数1の値が正しくない
 
・引数2がDECIMALの場合
  STRTONUM(' -1234567  ', 123456789012. )
    ==> -1234567 (DECIMAL(12,0)型)
  STRTONUM('  1234567.89  ', 9999999999.999) 
    ==> 1234567.89 (DECIMAL(13,3)型)
  STRTONUM('  1234567.89  ', 99999.999)
    ==> オーバフロー
  STRTONUM('  1.23456789E6 ', 9999999999.999) 
    ==> DECIMALへの変換の,STRTONUM関数の引数1の値が正しくない
 
・引数2がFLOATの場合
  STRTONUM('  1234567.89  ', 1e0)
    ==> 1.23456789E6 (FLOAT型)
  STRTONUM('  -1234567890123  ', 0e0)
    ==> -1.234567890123E12 (FLOAT型)
  STRTONUM('  1.23456789E6 ', 1E1)
    ==> 1.23456789E6 (FLOAT型)
  STRTONUM('  1.0E310  ', 9E9)
    ==> オーバフロー

(56) TAN

(a) 機能

ラジアンで角度を指定した引数の,正接(三角関数TAN)を返します。

(b) 形式

 〔MASTER.〕TAN(引数)

(c) 規則

  1. 引数に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 値式に指定できるものを次に示します。

    • 数定数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 四則演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  4. 引数のデータ型は数データ型にしてください。

  5. 結果のデータ型はFLOATになります。

  6. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数の値式がナル値であれば,結果もナル値になります。

  7. 関数の結果が,結果のデータ型で表現できない値ならば,オーバフローエラーになります。なお,オーバフローエラー抑止が設定されている場合の結果については,「オーバフローエラー抑止が設定されている場合の演算結果」を参照してください。

(57) TANH

(a) 機能

引数の双曲線正接を返します。

(b) 形式

 〔MASTER.〕TANH(引数)

(c) 規則

  1. 引数に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 値式に指定できるものを次に示します。

    • 数定数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 四則演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  4. 引数のデータ型は数データ型にしてください。

  5. 結果のデータ型はFLOATになります。

  6. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数の値式がナル値であれば,結果もナル値になります。

  7. 関数の結果が,結果のデータ型で表現できない値ならば,オーバフローエラーになります。なお,オーバフローエラー抑止が設定されている場合の結果については,「オーバフローエラー抑止が設定されている場合の演算結果」を参照してください。

(58) TRANSL(TRANSL_LONG)

(a) 機能

引数2で指定した文字列中のどれかの文字が,引数1で指定した文字列中に含まれる場合,それらの文字を引数3で指定した文字列中の対応する文字に変換した文字列を返します。

引数2の文字列中のi番目の文字が,引数3のi番目の文字に対応します。引数3の文字列の文字数が引数2の文字列の文字数より少ない場合,引数3の文字列として,引数3の文字列に引数4の文字を繰り返し埋めた文字列が仮定されます。

(b) 形式

 〔MASTER.〕TRANSL(引数1,引数2,引数3〔,引数4〕)
 〔MASTER.〕TRANSL_LONG(引数1,引数2,引数3〔,引数4〕)

(c) 規則

  1. 引数1,引数2,引数3,及び引数4に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 値式に指定できるものを次に示します。

    • 文字列定数,混在文字列定数,又は各国文字列定数(TRANSL_LONGの場合は混在文字列定数だけ指定できます)

    • 列指定

    • SQL変数又はSQLパラメタ

    • 連結演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  4. 引数3の文字列の文字数が,引数2の文字列の文字数よりも少ない場合は,引数3の文字列として,引数3の文字列に引数4の文字を繰り返し埋めた文字列が仮定されます。

  5. 引数4には,1文字だけ指定してください。引数4を省略すると引数1の文字集合の空白文字(引数1のデータ型がNCHAR又はNVARCHARの場合は全角空白)が仮定されます。

  6. TRANSLに指定できる引数のデータ型の組み合わせを次の表に示します。

    表2‒96 システム定義スカラ関数TRANSLの引数のデータ型の組み合わせ(引数4を省略する場合)

    引数1のデータ型

    引数2のデータ型

    引数3のデータ型

    指定可否

    CHAR,又はVARCHAR

    CHAR,又はVARCHAR

    CHAR,又はVARCHAR

    MCHAR,又はMVARCHAR

    MCHAR,又はMVARCHAR

    MCHAR,又はMVARCHAR

    NCHAR,又はNVARCHAR

    NCHAR,又はNVARCHAR

    NCHAR,又はNVARCHAR

    上記以外のデータ型の組み合わせ

    ×

    (凡例)

    ○:指定できます。

    ×:指定できません。

    表2‒97 システム定義スカラ関数TRANSLの引数のデータ型の組み合わせ(引数4を指定する場合)

    引数1のデータ型

    引数2のデータ型

    引数3のデータ型

    引数4のデータ型

    指定可否

    CHAR,又はVARCHAR

    CHAR,又はVARCHAR

    CHAR,又はVARCHAR

    CHAR,又はVARCHAR

    MCHAR,又はMVARCHAR

    MCHAR,又はMVARCHAR

    MCHAR,又はMVARCHAR

    MCHAR,又はMVARCHAR

    NCHAR,又はNVARCHAR

    NCHAR,又はNVARCHAR

    NCHAR,又はNVARCHAR

    NCHAR,又はNVARCHAR

    上記以外のデータ型の組み合わせ

    ×

    (凡例)

    ○:指定できます。

    ×:指定できません。

  7. TRANSL_LONGに指定できる引数のデータ型の組み合わせを次の表に示します。

    表2‒98 システム定義スカラ関数TRANSL_LONGの引数のデータ型の組み合わせ(引数4を省略する場合)

    引数1のデータ型

    引数2のデータ型

    引数3のデータ型

    指定可否

    MCHAR,又はMVARCHAR

    MCHAR,又はMVARCHAR

    MCHAR,又はMVARCHAR

    上記以外のデータ型の組み合わせ

    ×

    (凡例)

    ○:指定できます。

    ×:指定できません。

    表2‒99 システム定義スカラ関数TRANSL_LONGの引数のデータ型の組み合わせ(引数4を指定する場合)

    引数1のデータ型

    引数2のデータ型

    引数3のデータ型

    引数4のデータ型

    指定可否

    MCHAR,又はMVARCHAR

    MCHAR,又はMVARCHAR

    MCHAR,又はMVARCHAR

    MCHAR,又はMVARCHAR

    上記以外のデータ型の組み合わせ

    ×

    (凡例)

    ○:指定できます。

    ×:指定できません。

  8. TRANSLの引数1,引数2,引数3,及び引数4のすべてのデータ型が文字列型(CHAR又はVARCHAR)の場合,引数に指定する値式の文字集合は同じにしてください。

  9. 引数2及び引数3の値の最大長を次の表に示します。

    表2‒100 システム定義スカラ関数TRANSL,TRANSL_LONGの引数2,引数3の最大長

    引数1のデータ型

    引数2及び引数3の最大長

    CHAR

    又は

    VARCHAR

    既定文字集合,及び文字集合(UTF16以外)

    255

    文字集合(UTF16)

    510

    MCHAR又はMVARCHAR

    255

    NCHAR又はNVARCHAR

    127

    注※ TRANSL_LONGの場合は指定できません。

  10. 結果のデータ型を次に示します。

    表2‒101 システム定義スカラ関数TRANSLの結果のデータ型

    引数1のデータ型

    結果のデータ型

    CHAR(n)又はVARCHAR(n)

    VARCHAR(n)

    MCHAR(n)又はMVARCHAR(n)

    MVARCHAR(n)

    NCHAR(n)又はNVARCHAR(n)

    NVARCHAR(n)

    表2‒102 システム定義スカラ関数TRANSL_LONGの結果のデータ型

    引数1のデータ型

    結果のデータ型

    CHAR(n)又はVARCHAR(n)

    指定できません

    MCHAR(n)又はMVARCHAR(n)

    MVARCHAR(32000)

    NCHAR(n)又はNVARCHAR(n)

    指定できません

  11. 結果のデータ型が文字列型の場合,引数1の文字集合が結果の文字集合となります。

  12. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数の値式のどれかがナル値であれば,結果もナル値になります。

(d) 使用例

TRANSL,TRANSL_LONGの使用例を次に示します。

  TRANSL('data base system', 'abcdefghijklmnopqrstuvwxyz',
         'ABCDEFGHIJKLMNOPQRSTUVWXYZ')
    ==> 'DATA BASE SYSTEM'  (英小文字から英大文字への文字変換)
  TRANSL('<data base> system', '[ ] { } ( ) < >', '')
    ==> ' data base  system'
        (引数3は長さ0の文字列で,括弧('[',']','{','}','(',')',
         '<','>')から空白への文字変換)
  TRANSL('+12345.678', '+-012345678', 'SS', '9')
    ==> 'S99999.999'
  TRANSL (M'data base system',
          M'0123456789abcdefghijklmn
            opqrstuvwxyz',
          M'0123456789abcdefghijklmnopqrstuvwxyz')
    ==> M'data base system'  (全角文字の半角文字への文字変換)
 
  TRANSL_LONG(M'data base system',
              M'0123456789abcdefghijklmnopqrstuvwxyz',
              M'0123456789abcdefghijklmn
                opqrstuvwxyz')
    ==> M'data base system'
        (半角文字の全角文字への文字変換)
  TRANSL('+12345.678', '+012345678', '', 'S')
    ==> 'SSSSSS.SSS'
  TRANSL('2000-03-31 12:23:30', '-:', '/.')
    ==> '2000/03/31 12.23.30'

(59) TRUNC

(a) 機能

引数1の値の,小数点数以下のnけたより後のけた(10の−n乗未満のけた)を切り捨てた値を返します。なお,nは引数2で指定した値とします。

(b) 形式

 〔MASTER.〕TRUNC(引数1〔,引数2〕)

(c) 規則

  1. 引数1及び引数2に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 値式に指定できるものを次に示します。

    • 数定数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 四則演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  4. 引数1のデータ型は数データ型にしてください。引数2のデータ型は,INTEGER又はSMALLINTにしてください。

  5. 引数2を省略すると,0が仮定されます。引数2に指定できる値の範囲を次の表に示します。

    表2‒103 システム定義スカラ関数TRUNCの引数2に指定できる値の範囲

    結果のデータ型

    引数2に指定できる値の範囲

    INTEGER

    −9 〜 0

    DECIMAL(p, s)

    −(p-s-1) 〜 s

    FLOAT

    −307〜323

  6. 結果のデータ型を次の表に示します。

    表2‒104 システム定義スカラ関数TRUNCの結果のデータ型

    引数1のデータ型

    結果のデータ型

    SMALLINT

    INTEGER

    INTEGER

    INTEGER

    DECIMAL(p,s)

    DECIMAL(p,s)

    SMALLFLT

    FLOAT

    FLOAT

    FLOAT

  7. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数1又は引数2の値式がナル値であれば,結果もナル値になります。

(60) TRUNCYEAR

(a) 機能

引数2で指定した月及び引数3で指定した日を,各年度の開始の月日として,引数1で指定された日付を含む年度の最初の日付を返します。

3月20日締めで年度を求める場合,3月締めで年度を求める場合などに利用できます。

(b) 形式

 〔MASTER.〕TRUNCYEAR(引数1〔,引数2〔,引数3〕〕)

(c) 規則

  1. 引数1,引数2,及び引数3に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 引数1の値式に指定できるものを次に示します。

    • CURRENT_DATE値関数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 日付演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 引数2及び引数3の値式に指定できるものを次に示します。

    • 整数定数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 四則演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  4. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  5. 引数1のデータ型を,DATE型にしてください。

  6. 引数2及び引数3のデータ型は,INTEGER又はSMALLINTにしてください。

  7. 結果のデータ型はDATEになります。

  8. 結果の値は,非ナル値制約なし(ナル値を許します)になります。どれかの引数の値式がナル値であれば,結果もナル値になります。

  9. 引数2を省略すると,1が仮定されます。引数2に指定できる値の範囲は,1〜12です。

  10. 引数3を省略すると,1が仮定されます。引数3に指定できる値の範囲は,引数2の値が2の場合は1〜29です。それ以外の場合は,1〜(引数2で指定した月の最終日)です。

  11. 結果は,次の規則によって求められます。

    • 引数1の月<引数2,又は引数1の月=引数2かつ引数1の日<引数3の場合

      結果の年=引数1 の年 − 1

    • 引数1の月>引数2,又は引数1の月=引数2かつ引数1の日≧引数3の場合

      結果の年=引数1の年

    • 結果の年がうるう年でない場合で,引数2=2かつ引数3=29のとき

      結果の月=3

      結果の日=1

    • 結果の年がうるう年の場合で,引数2が2でないとき,又は引数3が29でないとき

      結果の月=引数2

      結果の日=引数3

  12. 関数の結果が,0001年01月01日〜9999年12月31日の範囲でないならば,オーバフローエラーになります。なお,オーバフローエラー抑止が設定されている場合の結果については,「オーバフローエラー抑止が設定されている場合の演算結果」を参照してください。

(d) 使用例

TRUNCYEARの使用例を次に示します。

  TRUNCYEAR(DATE('1999-09-10'))         ==> '1999-01-01'
  TRUNCYEAR(DATE('1999-09-11'), 4)      ==> '1999-04-01'
  TRUNCYEAR(DATE('1999-03-31'), 4)      ==> '1998-04-01'
  TRUNCYEAR(DATE('1999-08-11'), 3, 21)  ==> '1999-03-21'
  TRUNCYEAR(DATE('1999-03-20'), 3, 21)  ==> '1998-03-21'
  TRUNCYEAR(DATE('2000-02-28'), 2, 29)  ==> '1999-03-01'
                                        ('1999-02-29'は存在しません)
  TRUNCYEAR(DATE('2000-03-20'), 2, 29)  ==> '2000-02-29'
  TRUNCYEAR(DATE('0001-03-20'), 4)      ==> オーバフロー

(61) WEEK

(a) 機能

引数で指定された日付が,その年の第何週目かを1〜54の整数で返します。各週は,日曜日から始まるものとします。

(b) 形式

 〔MASTER.〕WEEK(引数)

(c) 規則

  1. 引数に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 値式に指定できるものを次に示します。

    • CURRENT_DATE値関数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 日付演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  4. 引数のデータ型はDATEにしてください。

  5. 結果のデータ型はINTEGERになります。

  6. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数の値式がナル値であれば,結果もナル値になります。

(d) 使用例

WEEKの使用例を次に示します。

  WEEK(DATE('2000-01-01'))   ==> 1
  WEEK(DATE('2000-01-02'))   ==> 2
  WEEK(DATE('2000-02-29'))   ==> 10
  WEEK(DATE('2000-12-30'))   ==> 53
  WEEK(DATE('2000-12-31'))   ==> 54
    '2000-01-01'は土曜日で,'2000-12-31'は日曜日です。

(62) WEEKOFMONTH

(a) 機能

引数で指定された日付が,その月の第何週目かを1〜6の整数で返します。各週は,日曜日から始まるものとします。

(b) 形式

 〔MASTER.〕WEEKOFMONTH(引数)

(c) 規則

  1. 引数に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 値式に指定できるものを次に示します。

    • CURRENT_DATE値関数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 日付演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  4. 引数のデータ型はDATEにしてください。

  5. 結果のデータ型はINTEGERになります。

  6. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数の値式がナル値であれば,結果もナル値になります。

(d) 使用例

WEEKOFMONTHの使用例を次に示します。

  WEEKOFMONTH(DATE('2000-01-01'))   ==> 1
  WEEKOFMONTH(DATE('2000-01-02'))   ==> 2
  WEEKOFMONTH(DATE('2000-01-29'))   ==> 5
  WEEKOFMONTH(DATE('2000-01-30'))   ==> 6
    '2000-01-01'は土曜日で,'2000-01-30'は日曜日です。

(63) YEARS_BETWEEN

(a) 機能

引数で指定した二つの日付間の年数を,実数(FLOAT型)で返します。

(b) 形式

 〔MASTER.〕YEARS_BETWEEN(引数1,引数2)

(c) 規則

  1. 引数1及び引数2に指定できるものを次に示します。

    • 値式〔AS データ型〕

  2. 値式に指定できるものを次に示します。

    • CURRENT_DATE値関数

    • 列指定

    • SQL変数又はSQLパラメタ

    • 日付演算

    • 集合関数

    • スカラ関数

    • 関数呼出し

    • CASE式

    • CAST指定

    • 埋込み変数又は?パラメタ

    • スカラ副問合せ

  3. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。

  4. 引数1及び引数2のデータ型は,DATEにしてください。

  5. 結果のデータ型はFLOATになります。

  6. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数1又は引数2の値式がナル値であれば,結果もナル値になります。

  7. YEARS_BETWEEN(日付1,日付2)の結果の月数は,次の規則に従って計算されます。

    • 日付1<日付2の場合

      結果=−YEARS_BETWEEN(日付2,日付1)

    • 日付1≧日付2の場合

      yを0以上の整数とし,日付4≦日付1<日付3を満たす(日付2+y年)の日付,及び(日付2+(y+1)年)の日付を,それぞれ日付4及び日付3とします。

      日付4と日付1の間の日数(DAYS(日付1)−DAYS(日付4)),及び日付4と日付3の間の日数(DAYS(日付3)−DAYS(日付4))を,それぞれd1及びd2とします。d2の値は,365又は366のどちらかになります。

      結果の年数は,(y+d1÷d2)年になります。

    日付1,日付2,日付3,及び日付4の関係を次の図に示します。

    図2‒8 日付1,日付2,日付3,及び日付4の関係(YEARS_BETWEEN)

    [図データ]

(d) 使用例

YEARS_BETWEENの使用例を次に示します。

  YEARS_BETWEEN(DATE('2000-06-10'),DATE('1999-06-10'))==>   1
  YEARS_BETWEEN(DATE('2000-06-11'),DATE('1999-06-10'))==>   1.002739...
  YEARS_BETWEEN(DATE('1999-06-11'),DATE('1998-06-10'))==>   1.002732...
  YEARS_BETWEEN(DATE('2014-09-09'),DATE('1999-06-10'))==>  15.249315...
  YEARS_BETWEEN(DATE('1999-06-10'),DATE('2014-09-09'))==> -15.249315...