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

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

システム定義スカラ関数に関係する規則を次に示します。

  1. システム定義スカラ関数を使用する場合,pdinit又はpdmodでデータディクショナリLOB用RDエリアを作成しておく必要があります。pdinit及びpdmodについては,マニュアル「HiRDB Version 8 コマンドリファレンス」を参照してください。
  2. 繰返し列を引数の値式として指定する場合,添字を指定してください。ただし,添字としてANYは指定できません。
  3. 埋込み変数又は?パラメタを,単独で値式に指定する場合は,AS データ型を必ず指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。
  4. システム定義スカラ関数を指定して導出した,名前付き導出表に対する問合せでは,ホールダブルカーソルを使用できません。
  5. システム定義スカラ関数は,ビュー定義中の導出問合せ式には指定できません。
<この項の構成>
(1) ACOS
(2) ADD_INTERVAL
(3) ASCII
(4) ASIN
(5) ATAN
(6) ATAN2
(7) CEIL
(8) CENTURY
(9) CHR
(10) COS
(11) COSH
(12) DATE_TIME
(13) DAYNAME
(14) DAYOFWEEK
(15) DAYOFYEAR
(16) DEGREES
(17) EXP
(18) FLOOR
(19) GREATEST
(20) HALF
(21) INSERTSTR(INSERTSTR_LONG)
(22) INTERVAL_DATETIMES
(23) ISDIGITS
(24) IS_DBLBYTES
(25) IS_SNGLBYTES
(26) LAST_DAY
(27) LEAST
(28) LEFTSTR
(29) LN
(30) LOG10
(31) LTRIM
(32) LTRIMSTR
(33) MIDNIGHTSECONDS
(34) MONTHNAME
(35) MONTHS_BETWEEN
(36) NEXT_DAY
(37) NUMEDIT
(38) PI
(39) POSSTR
(40) POWER
(41) QUARTER
(42) RADIANS
(43) REPLACE(REPLACE_LONG)
(44) REVERSESTR
(45) RIGHTSTR
(46) ROUND
(47) ROUNDMONTH
(48) RTRIM
(49) RTRIMSTR
(50) SIGN
(51) SIN
(52) SINH
(53) SQRT
(54) STRTONUM
(55) TAN
(56) TANH
(57) TRANSL(TRANSL_LONG)
(58) TRUNC
(59) TRUNCYEAR
(60) WEEK
(61) WEEKOFMONTH
(62) YEARS_BETWEEN

(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秒の範囲でない場合,オーバフローエラーになります。なお,オーバフローエラー抑止が設定されている場合の演算結果については,「2.18 オーバフローエラー抑止が設定されている場合の演算結果」を参照してください。
  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'
   システム共通定義pdsysに,set pd_leap_second = Yを指定している場合です。

 ADD_INTERVAL('2000-03-05 17:04:60',-60.)
   ==> '2000-03-05 17:04:00'
   システム共通定義pdsysに,set 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-48 システム定義スカラ関数CEILの結果のデータ型

    引数のデータ型結果のデータ型
    SMALLINTINTEGER
    INTEGERINTEGER
    DECIMAL(p,s)DECIMAL(p,s)
    SMALLFLTFLOAT
    FLOATFLOAT
  6. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数の値式がナル値であれば,結果もナル値になります。
  7. 関数の結果が,結果のデータ型で表現できない値ならば,オーバフローエラーになります。なお,オーバフローエラー抑止が設定されている場合の結果については,「2.18 オーバフローエラー抑止が設定されている場合の演算結果」を参照してください。

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

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

(17) EXP

(a) 機能

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

(b) 形式

 〔MASTER.〕EXP(引数)

(c) 規則
  1. 引数に指定できるものを次に示します。
    • 値式〔AS データ型〕
  2. 値式に指定できるものを次に示します。
    • 数定数
    • 列指定
    • SQL変数又はSQLパラメタ
    • 四則演算
    • 集合関数
    • スカラ関数
    • 関数呼出し
    • CASE式
    • CAST指定
    • 埋込み変数又は?パラメタ
    • スカラ副問合せ
  3. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。
  4. 引数のデータ型は数データ型にしてください。
  5. 結果のデータ型はFLOATになります。
  6. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数の値式がナル値であれば,結果もナル値になります。
  7. 関数の結果が,結果のデータ型で表現できない値ならば,オーバフローエラーになります。なお,オーバフローエラー抑止が設定されている場合の結果については,「2.18 オーバフローエラー抑止が設定されている場合の演算結果」を参照してください。

(18) FLOOR

(a) 機能

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

(b) 形式

 〔MASTER.〕FLOOR(引数)

(c) 規則
  1. 引数に指定できるものを次に示します。
    • 値式〔AS データ型〕
  2. 値式に指定できるものを次に示します。
    • 数定数
    • 列指定
    • SQL変数又はSQLパラメタ
    • 四則演算
    • 集合関数
    • スカラ関数
    • 関数呼出し
    • CASE式
    • CAST指定
    • 埋込み変数又は?パラメタ
    • スカラ副問合せ
  3. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。
  4. 引数のデータ型は数データ型にしてください。
  5. 結果のデータ型を次の表に示します。

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

    引数のデータ型結果のデータ型
    SMALLINTINTEGER
    INTEGERINTEGER
    DECIMAL(p, s)DECIMAL(p, s)
    SMALLFLTFLOAT
    FLOATFLOAT
  6. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数の値式がナル値であれば,結果もナル値になります。
  7. 関数の結果が,結果のデータ型で表現できない値ならば,オーバフローエラーになります。なお,オーバフローエラー抑止が設定されている場合の結果については,「2.18 オーバフローエラー抑止が設定されている場合の演算結果」を参照してください。

(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-50 システム定義スカラ関数GREATEST(引数3を省略する場合)の引数のデータ型の組合せ

    引数1のデータ型引数2のデータ型指定可否
    INTEGER,SMALLINT,DECIMAL,FLOAT,又はSMALLFLTINTEGER,SMALLINT,DECIMAL,FLOAT,又はSMALLFLT指定可
    CHAR,又はVARCHARCHAR,又はVARCHAR指定可
    MCHAR,又はMVARCHARMCHAR,又はMVARCHAR指定可
    NCHAR,又はNVARCHARNCHAR,又はNVARCHAR指定可
    DATEDATE指定可
    TIMETIME指定可
    上記以外のデータ型の組合せ指定不可

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

    引数1のデータ型引数2のデータ型引数3のデータ型指定可否
    INTEGER,SMALLINT,DECIMAL,FLOAT,又はSMALLFLTINTEGER,SMALLINT,DECIMAL,FLOAT,又はSMALLFLTINTEGER,SMALLINT,DECIMAL,FLOAT,又はSMALLFLT指定可
    CHAR,又はVARCHARCHAR,又はVARCHARCHAR,又はVARCHAR指定可
    MCHAR,又はMVARCHARMCHAR,又はMVARCHARMCHAR,又はMVARCHAR指定可
    NCHAR,又はNVARCHARNCHAR,又はNVARCHARNCHAR,又はNVARCHAR指定可
    DATEDATEDATE指定可
    TIMETIMETIME指定可
    上記以外のデータ型の組合せ指定不可
  6. 引数に指定した値式のデータ型が文字データ型の場合,値式の文字集合はすべて同じにしてください。
  7. 結果のデータ型を次の表に示します。

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

    引数のデータ型結果のデータ型
    INTEGER又はSMALLINTINTEGER
    DECIMAL〔,INTEGER又はSMALLINT〕DECIMAL※1
    FLOAT,SMALLFLT〔,DECIMAL,INTEGER,又はSMALLINT〕FLOAT
    CHAR又はVARCHARVARCHAR※2
    MCHAR又はMVARCHARMVARCHAR※2
    NCHAR又はNVARCHARNVARCHAR※2
    DATEDATE
    TIMETIME
    注※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) INSERTSTRINSERTSTR_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-53 システム定義スカラ関数INSERTSTR,INSERTSTR_LONGの引数のデータ型の組合せ

    引数1のデータ型引数4のデータ型指定可否
    CHAR,又はVARCHARCHAR,又はVARCHAR指定可
    MCHAR,又はMVARCHARMCHAR,又はMVARCHAR指定可
    NCHAR,又はNVARCHARNCHAR,又はNVARCHAR指定可
    上記以外のデータ型の組合せ指定不可
  6. 引数1及び引数4の両方に文字列型(CHAR又はVARCHAR)の値式を指定する場合,両方の引数の文字集合は同じにしてください。
  7. 引数4の値の最大長を次に示します。

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

    引数1(及び引数4)のデータ型引数4の最大長
    CHAR
    又は
    VARCHAR
    既定文字集合,及び文字集合(UTF16以外)255
    文字集合(UTF16)510
    MCHAR又はMVARCHAR255
    NCHAR又はNVARCHAR127

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

    引数1(及び引数4)のデータ型引数4の最大長
    CHAR又はVARCHAR32000
    MCHAR又はMVARCHAR32000
    NCHAR又はNVARCHAR16000
  8. 引数2及び引数3のデータ型は,INTEGER又はSMALLINTにしてください。
  9. 引数3に0を指定すると,部分文字列は,削除されません。
  10. 結果のデータ型を次に示します。

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

    引数1のデータ型結果のデータ型
    CHAR(n)又はVARCHAR(n)VARCHAR(n)
    MCHAR(n)又はMVARCHAR(n)MVARCHAR(n)
    NCHAR(n)又はNVARCHAR(n)NVARCHAR(n)

    表2-57 システム定義スカラ関数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-58 システム定義スカラ関数INSERTSTRの引数2及び引数3の値の範囲

    引数1のデータ型引数2の値の範囲引数3の値の範囲
    CHAR(n)
    又はVARCHAR(n)
    既定文字集合,及び文字集合(UTF16以外)1~n0~(n+1-m)
    文字集合(UTF16)1~n/20~(n/2+1-m)
    MCHAR(n)又はMVARCHAR(n)1~n0~(n+1-m)
    NCHAR(n)又はNVARCHAR(n)1~n0~(n+1-m)

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

    引数1のデータ型引数2の値の範囲引数3の値の範囲
    CHAR(n)
    又はVARCHAR(n)
    既定文字集合,及び文字集合(UTF16以外)1~320000~(32001-m)
    文字集合(UTF16)1~160000~(16001-m)
    MCHAR(n)又はMVARCHAR(n)1~320000~(32001-m)
    NCHAR(n)又はNVARCHAR(n)1~160000~(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-60 システム定義スカラ関数LEAST(引数3を省略する場合)の引数のデータ型の組合せ

    引数1のデータ型引数2のデータ型指定可否
    INTEGER,SMALLINT,DECIMAL,FLOAT,又はSMALLFLTINTEGER,SMALLINT,DECIMAL,FLOAT,又はSMALLFLT指定可
    CHAR,又はVARCHARCHAR,又はVARCHAR指定可
    MCHAR,又はMVARCHARMCHAR,又はMVARCHAR指定可
    NCHAR,又はNVARCHARNCHAR,又はNVARCHAR指定可
    DATEDATE指定可
    TIMETIME指定可
    上記以外のデータ型の組合せ指定不可

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

    引数1のデータ型引数2のデータ型引数3のデータ型指定可否
    INTEGER,SMALLINT,DECIMAL,FLOAT,又はSMALLFLTINTEGER,SMALLINT,DECIMAL,FLOAT,又はSMALLFLTINTEGER,SMALLINT,DECIMAL,FLOAT,又はSMALLFLT指定可
    CHAR,又はVARCHARCHAR,又はVARCHARCHAR,又はVARCHAR指定可
    MCHAR,又はMVARCHARMCHAR,又はMVARCHARMCHAR,又はMVARCHAR指定可
    NCHAR,又はNVARCHARNCHAR,又はNVARCHARNCHAR,又はNVARCHAR指定可
    DATEDATEDATE指定可
    TIMETIMETIME指定可
    上記以外のデータ型の組合せ指定不可
  6. 引数に指定した値式のデータ型が文字データ型の場合,値式の文字集合はすべて同じにしてください。
  7. 結果のデータ型を次の表に示します。

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

    引数のデータ型結果のデータ型
    INTEGER又はSMALLINTINTEGER
    DECIMAL〔,INTEGER又はSMALLINT〕DECIMAL※1
    FLOAT,SMALLFLT〔,DECIMAL,INTEGER,又はSMALLINT〕FLOAT
    CHAR又はVARCHARVARCHAR※2
    MCHAR又はMVARCHARMVARCHAR※2
    NCHAR又はNVARCHARNVARCHAR※2
    DATEDATE
    TIMETIME
    注※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-63 システム定義スカラ関数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-64 システム定義スカラ関数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)
    引数2を指定する場合,指定可能な引数のデータ型の組合せを次の表に示します。
  5. 引数2を指定する場合,指定可能な引数のデータ型の組合せを次の表に示します。

    表2-65 システム定義スカラ関数LTRIMの引数のデータ型の組合せ

    引数1のデータ型引数2のデータ型指定可否
    CHAR,又はVARCHARCHAR,又はVARCHAR指定可
    MCHAR,又はMVARCHARMCHAR,又はMVARCHAR指定可
    NCHAR,又はNVARCHARNCHAR,又はNVARCHAR指定可
    上記以外のデータ型の組合せ指定不可
  6. 引数2の値の長さは,文字列データ型又は混在文字列データ型の場合は30バイト以下(文字集合がUTF16の文字データ型の場合は60バイト以下),各国文字列データ型の場合は30文字以下にしてください。
  7. 引数1及び引数2のデータ型が両方とも文字列型の場合,値式の文字集合は同じにしてください。
  8. 結果のデータ型を次の表に示します。

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

    引数1(及び引数2)のデータ型結果のデータ型
    CHAR(n)又はVARCHAR(n)VARCHAR(n)
    MCHAR(n)又はMVARCHAR(n)MVARCHAR(n)
    NCHAR(n)又はNVARCHAR(n)NVARCHAR(n)
  9. 結果のデータ型が文字列型(CHAR又はVARCHAR)の場合,引数1の文字集合が結果の文字集合となります。
  10. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数1又は引数2の値式がナル値であれば,結果もナル値になります。
  11. 引数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-67 システム定義スカラ関数LTRIMSTRの引数のデータ型の組合せ

    引数1のデータ型引数2のデータ型指定可否
    CHAR,又はVARCHARCHAR,又はVARCHAR指定可
    MCHAR,又はMVARCHARMCHAR,又はMVARCHAR指定可
    NCHAR,又はNVARCHARNCHAR,又はNVARCHAR指定可
    上記以外のデータ型の組合せ指定不可
  5. 引数1及び引数2のデータ型が両方とも文字列型の場合,値式の文字集合は同じにしてください。
  6. 引数2の最大長を次の表に示します。

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

    引数1(及び引数2)のデータ型引数2の最大長
    CHAR
    又は
    VARCHAR
    既定文字集合,及び文字集合(UTF16以外)255
    文字集合(UTF16)510
    MCHAR又はMVARCHAR255
    NCHAR又はNVARCHAR127
  7. 結果のデータ型を次の表に示します。

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

    引数1(及び引数2)のデータ型結果のデータ型
    CHAR(n)又はVARCHAR(n)VARCHAR(n)
    MCHAR(n)又はMVARCHAR(n)MVARCHAR(n)
    NCHAR(n)又はNVARCHAR(n)NVARCHAR(n)
  8. 結果のデータ型が文字列型(CHAR又はVARCHAR)の場合,引数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-70 曜日を表す引数2 の整数値の意味

    引数2の整数値意味(曜日)
    1日曜日(Sunday)
    2月曜日(Monday)
    3火曜日(Tuesday)
    4水曜日(Wednesday)
    5木曜日(Thursday)
    6金曜日(Friday)
    7土曜日(Saturday)
  9. 関数の結果が,結果のデータ型で表現できない値ならば,オーバフローエラーになります。なお,オーバフローエラー抑止が設定されている場合の結果については,「2.18 オーバフローエラー抑止が設定されている場合の演算結果」を参照してください。
(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で指定された形式で表現できない値ならば,オーバフローエラーになります。なお,オーバフローエラー抑止が設定されている場合の結果については,「2.18 オーバフローエラー抑止が設定されている場合の演算結果」を参照してください。
  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) PI

(a) 機能

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

(b) 形式

 〔MASTER.〕PI()

(c) 規則
  1. 結果のデータ型は,FLOAT型になります。
  2. 結果の値は,非ナル値制約なし(ナル値を許します)になります。ただし,常に円周率の値が返されるため,ナル値が返されることはありません。
(d) 使用例

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

 PI()   ==> 3.14159265358979323846

(39) 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-71 システム定義スカラ関数POSSTRの引数のデータ型の組合せ

    引数1のデータ型引数2のデータ型指定可否
    CHAR,又はVARCHARCHAR,又はVARCHAR指定可
    MCHAR,又はMVARCHARMCHAR,又はMVARCHAR指定可
    NCHAR,又はNVARCHARNCHAR,又はNVARCHAR指定可
    上記以外のデータ型の組合せ指定不可
  6. 引数1及び引数2のデータ型が両方とも文字列データ型(CHAR又はVARCHAR)の場合,値式の文字集合は同じにしてください。
  7. 引数2の値の最大長を次の表に示します。

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

    引数1(及び引数2)のデータ型引数2の最大長
    CHAR
    又は
    VARCHAR
    既定文字集合,及び文字集合(UTF16以外)255
    文字集合(UTF16)510
    MCHAR又はMVARCHAR255
    NCHAR又はNVARCHAR127
  8. 引数3及び引数4のデータ型は,INTEGER又はSMALLINTにしてください。
  9. 結果のデータ型はINTEGERになります。
  10. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数の値式のどれかがナル値であれば,結果もナル値になります。
  11. 引数3及び引数4に指定できる値の範囲を次の表に示します。

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

    引数1(及び引数2)のデータ型引数3の値の範囲引数4の値の範囲
    CHAR(n)
    又は
    VARCHAR(n)
    既定文字集合,及び文字集合(UTF16以外)1~n1~n
    文字集合(UTF16)1~n/21~n/2
    MCHAR(n)又はMVARCHAR(n)1~n1~n
    NCHAR(n)又はNVARCHAR(n)1~n1~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

(40) 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-74 システム定義スカラ関数POWERの結果のデータ型

    引数1のデータ型引数2のデータ型
    SMALLINT又はINTEGERDECIMAL(p,s),SMALLFLT,又はFLOAT
    SMALLINT又は
    INTEGER
    INTEGERFLOAT
    DECIMAL(p,s),SMALLFLT,又はFLOATFLOATFLOAT
  6. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数1又は引数2の値式がナル値であれば,結果もナル値になります。
  7. 引数1に負の値を指定し,引数2に整数でない値を指定すると,定義域エラー(domain error occurs)になります。
  8. 引数1に値0を指定し,引数2に正でない値を指定すると,0除算(division by zero)になります。なお,オーバフローエラー抑止が設定されている場合の結果については,「2.18 オーバフローエラー抑止が設定されている場合の演算結果」を参照してください。
  9. 関数の結果が,結果のデータ型で表現できない値ならば,オーバフローエラーになります。なお,オーバフローエラー抑止が設定されている場合の結果については,「2.18 オーバフローエラー抑止が設定されている場合の演算結果」を参照してください。

(41) 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

(42) RADIANS

(a) 機能

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

(b) 形式

 〔MASTER.〕RADIANS(引数)

(c) 規則
  1. 引数に指定できるものを次に示します。
    • 値式〔AS データ型〕
  2. 値式に指定できるものを次に示します。
    • 数定数
    • 列指定
    • SQL変数又はSQLパラメタ
    • 四則演算
    • 集合関数
    • スカラ関数
    • 関数呼出し
    • CASE式
    • CAST指定
    • 埋込み変数又は?パラメタ
    • スカラ副問合せ
  3. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。
  4. 引数のデータ型は数データ型にしてください。
  5. 結果のデータ型はFLOATになります。
  6. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数の値式がナル値であれば,結果もナル値になります。

(43) REPLACEREPLACE_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-75 システム定義スカラ関数REPLACE(引数3を省略する場合)の引数のデータ型の組合せ

    引数1のデータ型引数2のデータ型指定可否
    CHAR,又はVARCHARCHAR,又はVARCHAR指定可
    MCHAR,又はMVARCHARMCHAR,又はMVARCHAR指定可
    NCHAR,又はNVARCHARNCHAR,又はNVARCHAR指定可
    上記以外のデータ型の組合せ指定不可

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

    引数1のデータ型引数2のデータ型引数3のデータ型指定可否
    CHAR,又はVARCHARCHAR,又はVARCHARCHAR,又はVARCHAR指定可
    MCHAR,又はMVARCHARMCHAR,又はMVARCHARMCHAR,又はMVARCHAR指定可
    NCHAR,又はNVARCHARNCHAR,又はNVARCHARNCHAR,又はNVARCHAR指定可
    上記以外のデータ型の組合せ指定不可
  5. 引数2及び引数3の値の最大長を次の表に示します。

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

    引数1(及び引数2,引数3)のデータ型引数2及び引数3の最大長
    CHAR
    又は
    VARCHAR
    既定文字集合,及び文字集合(UTF16以外)255
    文字集合(UTF16)510
    MCHAR又はMVARCHAR255
    NCHAR又はNVARCHAR127
  6. 引数1,引数2,及び引数3のデータ型が文字列型(CHAR又はVARCHAR)の場合,引数に指定する値式の文字集合は同じにしてください。
  7. 引数3を省略すると,空の文字列を仮定し,引数1の文字列中から引数2の文字列と一致するすべての部分文字列を削除します。
  8. 結果のデータ型を次に示します。

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

    引数1のデータ型結果のデータ型
    CHAR(n)又はVARCHAR(n)VARCHAR(n)
    MCHAR(n)又はMVARCHAR(n)MVARCHAR(n)
    NCHAR(n)又はNVARCHAR(n)NVARCHAR(n)

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

    引数1のデータ型結果のデータ型
    CHAR(n)又はVARCHAR(n)VARCHAR(32000)
    MCHAR(n)又はMVARCHAR(n)MVARCHAR(32000)
    NCHAR(n)又はNVARCHAR(n)NVARCHAR(16000)
  9. 結果のデータ型が文字列型(CHAR又はVARCHAR)の場合,引数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'

(44) 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-80 システム定義スカラ関数REVERSESTRの結果のデータ型

    引数のデータ型結果のデータ型
    CHAR(n)又はVARCHAR(n)VARCHAR(n)
    MCHAR(n)又はMVARCHAR(n)MVARCHAR(n)
    NCHAR(n)又はNVARCHAR(n)NVARCHAR(n)
  6. 結果のデータ型が文字列型(CHAR又はVARCHAR)の場合,引数の文字集合が結果の文字集合となります。
  7. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数の値式がナル値であれば,結果もナル値になります。
(d) 使用例

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

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

(45) 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-81 システム定義スカラ関数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-82 システム定義スカラ関数RIGHTSTRの結果のデータ型

    引数1のデータ型結果のデータ型
    CHAR(n)又はVARCHAR(n)VARCHAR(n)
    MCHAR(n)又はMVARCHAR(n)MVARCHAR(n)
    NCHAR(n)又はNVARCHAR(n)NVARCHAR(n)
  9. 結果のデータ型が文字列型(CHAR又はVARCHAR)の場合,引数1の値式の文字集合が結果の文字集合となります。
  10. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数1又は引数2の値式がナル値であれば,結果もナル値になります。
  11. 引数1の文字列の値の文字数が,引数2で指定した文字数よりも少ない場合,結果は引数1と同じ値になります。
(d) 使用例

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

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

(46) 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-83 システム定義スカラ関数ROUNDの引数2に指定できる値の範囲

    結果のデータ型引数2に指定できる値の範囲
    INTEGER-9~0
    DECIMAL(p, s)-(p-s-1)~s
    FLOAT・HP-UX(32ビットモードの場合)の場合
    -307~307
    ・HP-UX(64ビットモードの場合),Solaris,AIX,Linux及びWindowsの場合
    -307~323
  6. 結果のデータ型を次の表に示します。

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

    引数1のデータ型結果のデータ型
    SMALLINTINTEGER
    INTEGERINTEGER
    DECIMAL(p, s)DECIMAL(p, s)
    SMALLFLTFLOAT
    FLOATFLOAT
  7. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数1,引数2,又は引数3の値式がナル値であれば,結果もナル値になります。
  8. 引数3を省略すると,5が仮定されます。引数3に指定できる値の範囲は,1~9です。引数1の10の-n-1乗の位の値が引数3の値以上ならば,切り上げ,そうでなければ切り捨てます。
  9. 関数の結果が,結果のデータ型で表現できない値ならば,オーバフローエラーになります。なお,オーバフローエラー抑止が設定されている場合の結果については,「2.18 オーバフローエラー抑止が設定されている場合の演算結果」を参照してください。

(47) 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日の範囲でないならば,オーバフローエラーになります。なお,オーバフローエラー抑止が設定されている場合の結果については,「2.18 オーバフローエラー抑止が設定されている場合の演算結果」を参照してください。
(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)   ==> オーバフロー

(48) 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-85 システム定義スカラ関数RTRIMの引数のデータ型の組合せ

    引数1のデータ型引数2のデータ型指定可否
    CHAR,又はVARCHARCHAR,又はVARCHAR指定可
    MCHAR,又はMVARCHARMCHAR,又はMVARCHAR指定可
    NCHAR,又はNVARCHARNCHAR,又はNVARCHAR指定可
    上記以外のデータ型の組合せ指定不可
  6. 引数1及び引数2のデータ型が両方とも文字列型(CHAR又はVARCHAR)の場合,引数に指定する値式の文字集合は同じにしてください。
  7. 引数2の値の長さは,文字列型又は混在文字列型の場合は30バイト以下(文字集合がUTF16の文字データ型の場合は60バイト以下),各国文字列型の場合は30文字以下にしてください。
  8. 結果のデータ型を次の表に示します。

    表2-86 システム定義スカラ関数RTRIMの結果のデータ型

    引数1(及び引数2)のデータ型結果のデータ型
    CHAR(n)又はVARCHAR(n)VARCHAR(n)
    MCHAR(n)又はMVARCHAR(n)MVARCHAR(n)
    NCHAR(n)又はNVARCHAR(n)NVARCHAR(n)
  9. 結果のデータ型が文字列型(CHAR又はVARCHAR)の場合,引数1の文字集合が結果の文字集合となります。
  10. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数1又は引数2の値式がナル値であれば,結果もナル値になります。
  11. 引数2を省略すると,次のように仮定されます。
    引数1のデータ型引数2を省略した場合の仮定値
    CHAR(n)又はVARCHAR(n)半角空白1文字からなる文字列
    MCHAR(n)又はMVARCHAR(n)半角空白と全角空白からなる文字列
    NCHAR(n)又はNVARCHAR(n)全角空白1文字からなる文字列
(d) 使用例

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

 RTRIM('data basebcabcabc', 'abc')   ==> 'data basebc'
 RTRIM('data base    ')              ==> 'data base'

(49) 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-87 システム定義スカラ関数RTRIMSTRの引数のデータ型の組合せ

    引数1のデータ型引数2のデータ型指定可否
    CHAR,又はVARCHARCHAR,又はVARCHAR指定可
    MCHAR,又はMVARCHARMCHAR,又はMVARCHAR指定可
    NCHAR,又はNVARCHARNCHAR,又はNVARCHAR指定可
    上記以外のデータ型の組合せ指定不可
  5. 引数1及び引数2のデータ型が両方とも文字列型(CHAR又はVARCHAR)の場合,引数に指定する値式の文字集合は同じにしてください。
  6. 引数2の最大長を次の表に示します。

    表2-88 システム定義スカラ関数RTRIMSTRの引数2の最大長

    引数1(及び引数2)のデータ型引数2の最大長
    CHAR
    又は
    VARCHAR
    既定文字集合,及び文字集合(UTF16以外)255
    文字集合(UTF16)510
    MCHAR又はMVARCHAR255
    NCHAR又はNVARCHAR127
  7. 結果のデータ型を次の表に示します。

    表2-89 システム定義スカラ関数RTRIMSTRの結果のデータ型

    引数1(及び引数2)のデータ型引数2の最大長
    CHAR(n)又はVARCHAR(n)VARCHAR(n)
    MCHAR(n)又はMVARCHAR(n)MVARCHAR(n)
    NCHAR(n)又はNVARCHAR(n)NVARCHAR(n)
  8. 結果のデータ型が文字列型(CHAR又はVARCHAR)の場合,引数1の文字集合が結果の文字集合となります。
  9. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数1又は引数2の値式がナル値であれば,結果もナル値になります。
(d) 使用例

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

 RTRIMSTR('data basebcabcabc', 'abc')   ==> 'data basebc'

(50) 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-90 システム定義スカラ関数SIGNの結果のデータ型

    引数1のデータ型結果のデータ型
    SMALLINTINTEGER
    INTEGERINTEGER
    DECIMAL(p,s)DECIMAL(1,0)
    SMALLFLTFLOAT
    FLOATFLOAT
  6. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数の値式がナル値であれば,結果もナル値になります。

(51) SIN

(a) 機能

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

(b) 形式

 〔MASTER.〕SIN(引数)

(c) 規則
  1. 引数に指定できるものを次に示します。
    • 値式〔AS データ型〕
  2. 値式に指定できるものを次に示します。
    • 数定数
    • 列指定
    • SQL変数又はSQLパラメタ
    • 四則演算
    • 集合関数
    • スカラ関数
    • 関数呼出し
    • CASE式
    • CAST指定
    • 埋込み変数又は?パラメタ
    • スカラ副問合せ
  3. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。
  4. 引数のデータ型は数データ型にしてください。
  5. 結果のデータ型はFLOATになります。
  6. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数の値式がナル値であれば,結果もナル値になります。

(52) SINH

(a) 機能

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

(b) 形式

 〔MASTER.〕SINH(引数)

(c) 規則
  1. 引数に指定できるものを次に示します。
    • 値式〔AS データ型〕
  2. 値式に指定できるものを次に示します。
    • 数定数
    • 列指定
    • SQL変数又はSQLパラメタ
    • 四則演算
    • 集合関数
    • スカラ関数
    • 関数呼出し
    • CASE式
    • CAST指定
    • 埋込み変数又は?パラメタ
    • スカラ副問合せ
  3. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。
  4. 引数のデータ型は数データ型にしてください。
  5. 結果のデータ型はFLOATになります。
  6. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数の値式がナル値であれば,結果もナル値になります。
  7. 関数の結果が,結果のデータ型で表現できない値ならば,オーバフローエラーになります。なお,オーバフローエラー抑止が設定されている場合の結果については,「2.18 オーバフローエラー抑止が設定されている場合の演算結果」を参照してください。

(53) 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)になります。

(54) 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-91 システム定義スカラ関数STRTONUMの結果のデータ型

    引数2のデータ型結果のデータ型
    SMALLINTINTEGER
    INTEGERINTEGER
    DECIMAL(p,s)DECIMAL(p,s)
    SMALLFLTFLOAT
    FLOATFLOAT
  9. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数1の値式がナル値であれば,結果もナル値になります。引数2の値は,結果に影響しません。
  10. 引数1の文字列の値は,次の形式で指定してください。
    • 引数2のデータ型がINTEGERの場合
      〔空白文字…〕〔+|-〕〔空白文字…〕数字…〔空白文字…〕
    • 引数2のデータ型がDECIMALの場合
      〔空白文字…〕〔+|-〕〔空白文字…〕
       {数字…〔.〔数字…〕〕|.数字…}〔空白文字…〕
    • 引数2のデータ型がFLOATの場合
      〔空白文字…〕〔+|-〕〔空白文字…〕
       {数字…〔.〔数字…〕〕|.数字…}
       〔{E|e}〔+|-〕数字…〕〔空白文字…〕
  11. 関数の結果が,結果のデータ型で表現できない値ならば,オーバフローエラーになります。なお,オーバフローエラー抑止が設定されている場合の結果については,「2.18 オーバフローエラー抑止が設定されている場合の演算結果」を参照してください。
  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)
   ==> オーバフロー

(55) TAN

(a) 機能

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

(b) 形式

 〔MASTER.〕TAN(引数)

(c) 規則
  1. 引数に指定できるものを次に示します。
    • 値式〔AS データ型〕
  2. 値式に指定できるものを次に示します。
    • 数定数
    • 列指定
    • SQL変数又はSQLパラメタ
    • 四則演算
    • 集合関数
    • スカラ関数
    • 関数呼出し
    • CASE式
    • CAST指定
    • 埋込み変数又は?パラメタ
    • スカラ副問合せ
  3. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。
  4. 引数のデータ型は数データ型にしてください。
  5. 結果のデータ型はFLOATになります。
  6. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数の値式がナル値であれば,結果もナル値になります。
  7. 関数の結果が,結果のデータ型で表現できない値ならば,オーバフローエラーになります。なお,オーバフローエラー抑止が設定されている場合の結果については,「2.18 オーバフローエラー抑止が設定されている場合の演算結果」を参照してください。

(56) TANH

(a) 機能

引数の双曲線正接を返します。

(b) 形式

 〔MASTER.〕TANH(引数)

(c) 規則
  1. 引数に指定できるものを次に示します。
    • 値式〔AS データ型〕
  2. 値式に指定できるものを次に示します。
    • 数定数
    • 列指定
    • SQL変数又はSQLパラメタ
    • 四則演算
    • 集合関数
    • スカラ関数
    • 関数呼出し
    • CASE式
    • CAST指定
    • 埋込み変数又は?パラメタ
    • スカラ副問合せ
  3. 値式に埋込み変数又は?パラメタだけを指定する場合は,必ずAS データ型を指定してください。AS データ型を指定した場合,埋込み変数又は?パラメタ以外は指定できません。AS データ型を指定すると,AS句で指定したデータ型のパラメタを持つ関数が呼び出されます。
  4. 引数のデータ型は数データ型にしてください。
  5. 結果のデータ型はFLOATになります。
  6. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数の値式がナル値であれば,結果もナル値になります。
  7. 関数の結果が,結果のデータ型で表現できない値ならば,オーバフローエラーになります。なお,オーバフローエラー抑止が設定されている場合の結果については,「2.18 オーバフローエラー抑止が設定されている場合の演算結果」を参照してください。

(57) TRANSLTRANSL_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-92 システム定義スカラ関数TRANSLの引数のデータ型の組合せ(引数4を省略する場合)

    引数1のデータ型引数2のデータ型引数3のデータ型指定可否
    CHAR,又はVARCHARCHAR,又はVARCHARCHAR,又はVARCHAR指定可
    MCHAR,又はMVARCHARMCHAR,又はMVARCHARMCHAR,又はMVARCHAR指定可
    NCHAR,又はNVARCHARNCHAR,又はNVARCHARNCHAR,又はNVARCHAR指定可
    上記以外のデータ型の組合せ指定不可

    表2-93 システム定義スカラ関数TRANSLの引数のデータ型の組合せ(引数4を指定する場合)

    引数1のデータ型引数2のデータ型引数3のデータ型引数4のデータ型指定可否
    CHAR,又はVARCHARCHAR,又はVARCHARCHAR,又はVARCHARCHAR,又はVARCHAR指定可
    MCHAR,又はMVARCHARMCHAR,又はMVARCHARMCHAR,又はMVARCHARMCHAR,又はMVARCHAR指定可
    NCHAR,又はNVARCHARNCHAR,又はNVARCHARNCHAR,又はNVARCHARNCHAR,又はNVARCHAR指定可
    上記以外のデータ型の組合せ指定不可
  7. TRANSL_LONGに指定可能な引数のデータ型の組合せを次の表に示します。

    表2-94 システム定義スカラ関数TRANSL_LONGの引数のデータ型の組合せ(引数4を省略する場合)

    引数1のデータ型引数2のデータ型引数3のデータ型指定可否
    MCHAR,又はMVARCHARMCHAR,又はMVARCHARMCHAR,又はMVARCHAR指定可
    上記以外のデータ型の組合せ指定不可

    表2-95 システム定義スカラ関数TRANSL_LONGの引数のデータ型の組合せ(引数4を指定する場合)

    引数1のデータ型引数2のデータ型引数3のデータ型引数4のデータ型指定可否
    MCHAR,又はMVARCHARMCHAR,又はMVARCHARMCHAR,又はMVARCHARMCHAR,又はMVARCHAR指定可
    上記以外のデータ型の組合せ指定不可
  8. TRANSLの引数1,引数2,引数3,及び引数4のすべてのデータ型が文字列型(CHAR又はVARCHAR)の場合,引数に指定する値式の文字集合は同じにしてください。
  9. 引数2及び引数3の値の最大長を次の表に示します。

    表2-96 システム定義スカラ関数TRANSL,TRANSL_LONGの引数2,引数3の最大長

    引数1のデータ型引数2及び引数3の最大長
    CHAR
    又は
    VARCHAR
    既定文字集合,及び文字集合(UTF16以外)255
    文字集合(UTF16)510
    MCHAR又はMVARCHAR255
    NCHAR又はNVARCHAR127

    注※ TRANSL_LONGの場合は指定できません。


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

    表2-97 システム定義スカラ関数TRANSLの結果のデータ型

    引数1のデータ型結果のデータ型
    CHAR(n)又はVARCHAR(n)VARCHAR(n)
    MCHAR(n)又はMVARCHAR(n)MVARCHAR(n)
    NCHAR(n)又はNVARCHAR(n)NVARCHAR(n)

    表2-98 システム定義スカラ関数TRANSL_LONGの結果のデータ型

    引数1のデータ型結果のデータ型
    CHAR(n)又はVARCHAR(n)指定できません
    MCHAR(n)又はMVARCHAR(n)MVARCHAR(32000)
    NCHAR(n)又はNVARCHAR(n)指定できません
  11. TRANSLの結果のデータ型が文字列型(CHAR又はVARCHAR)の場合,引数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'

(58) 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-99 システム定義スカラ関数TRUNCの引数2に指定できる値の範囲

    結果のデータ型引数2に指定できる値の範囲
    INTEGER0 ~ 9
    DECIMAL(p, s)(p-s-1) ~ s
    FLOAT・HP-UX(32ビットモードの場合)の場合
    -307~307
    ・HP-UX(64ビットモードの場合),Solaris,AIX,Linux及びWindowsの場合
    -307~323
  6. 結果のデータ型を次の表に示します。

    表2-100 システム定義スカラ関数TRUNCの結果のデータ型

    引数1のデータ型結果のデータ型
    SMALLINTINTEGER
    INTEGERINTEGER
    DECIMAL(p,s)DECIMAL(p,s)
    SMALLFLTFLOAT
    FLOATFLOAT
  7. 結果の値は,非ナル値制約なし(ナル値を許します)になります。引数1又は引数2の値式がナル値であれば,結果もナル値になります。

(59) 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日の範囲でないならば,オーバフローエラーになります。なお,オーバフローエラー抑止が設定されている場合の結果については,「2.18 オーバフローエラー抑止が設定されている場合の演算結果」を参照してください。
(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)      ==> オーバフロー

(60) 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'は日曜日です。

(61) 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'は日曜日です。

(62) 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...