パッケージ org.opengion.fukurou.db

## クラス Functions

- java.lang.Object
- - org.opengion.fukurou.db.Functions

-     public final class Functions
      extends java.lang.Object

  JavaDB(derby) や、hsqldb に対する、Javaの拡張組込み関数です。 staticメソッドとして、関数を定義します。引数や返り値は、各ﾃﾞｰﾀﾍﾞｰｽの 定義に準拠します。

       ① JavaDB の場合
       【概要】
           実行するﾃﾞｰﾀﾍﾞｰｽから見えるところに、ファイルを配置する必要があります。
           java8 までなら、Javaのエクステンション(JAVA_HOME\)jre\lib\ext などですが、
           java9以降は、CLASSPATH に設定します。
           openGionでは、bin/const.bat で、OG_CLASSPATH 環境変数にパスを通して、
           使用しています。
           標準の Java staticメソッドを FUNCTION 定義することも出来ます。
       【設定】
           JavaDBに FUNCTION を定義します。(サンプル)
            DROP FUNCTION TO_CHAR;

            CREATE FUNCTION TO_CHAR ( VAL DOUBLE )
            RETURNS VARCHAR(20)
            DETERMINISTIC           -- 引数が同じなら常に同じ値を返すことを示す.(省略時はnot deterministic)
            PARAMETER STYLE JAVA    -- 戻り値のタイプ
            NO SQL LANGUAGE JAVA    -- 関数の中でSQLは実行しないことを示す
            EXTERNAL NAME 'org.opengion.fukurou.db.Functions.toChar' ;

       ② HSQLDB の場合
       【概要】

  機能分類
    拡張組込み関数
  変更履歴:
    6.8.5.1 (2018/01/15) org.opengion.javadb → org.opengion.fukurou.db にパッケージ変更
  バージョン
    1.1.0
  作成者
    Kazuhiko Hasegawa
  導入されたバージョン:
    JDK8.0,

- - ### メソッドの概要

    すべてのメソッド staticメソッド concreteメソッド
    修飾子とタイプ | メソッド | 説明
    --- | --- | ---
    `static java.lang.String` | `checkDelay​(java.lang.String date1, java.lang.String date2, double sec1, double sec2, double sec3)` | 日時文字列(yyyyMMddHHmmss)の引数1,2に対して、差分の範囲判定を行います。
    `static java.lang.String` | `join2​(int no, java.lang.String arg2, java.lang.String arg3, java.lang.String arg4)` | 特殊な文字列の連結を行います。
    `static int` | `lengthb​(java.lang.String value)` | length関数のバイト数版 過去に、hsqldb 用に作成したJava関数です。
    `static java.lang.String` | `replace​(java.lang.String source, java.lang.String target, java.lang.String replacement)` | 対象の文字列の部分文字列を置換します。
    `static java.lang.String` | `substrb​(java.lang.String value, int start, int length)` | substr関数のバイト数版 過去に、hsqldb 用に作成したJava関数です。
    `static java.lang.String` | `toChar​(double val)` | 数値を文字列に変換します。

    - ### クラスから継承されたメソッド java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### メソッドの詳細

    - #### toChar

          public static java.lang.String toChar​(double val)

      数値を文字列に変換します。 この関数は、引数の double が、小数点を含まない場合は、 小数点以下を出しません。 JavaDBの場合、数字と文字列の連結が出来ないため、文字列変換関数を用意します。 DROP FUNCTION TO_CHAR; CREATE FUNCTION TO_CHAR ( VAL DOUBLE ) RETURNS VARCHAR(20) DETERMINISTIC -- 引数が同じなら常に同じ値を返すことを示す.(省略時はnot deterministic) PARAMETER STYLE JAVA -- 戻り値のタイプ NO SQL LANGUAGE JAVA -- 関数の中でSQLは実行しないことを示す EXTERNAL NAME 'org.opengion.fukurou.db.Functions.toChar' ;
      パラメータ:
        `val` - 文字列に変換すべき数値
      戻り値:
        変換した文字列
      変更履歴:
        6.7.3.0 (2017/01/27) 新規作成, 6.8.5.1 (2018/01/15) org.opengion.javadb → org.opengion.fukurou.db にパッケージ変更, 6.9.8.0 (2018/05/28) FindBugs:浮動小数点の等価性のためのテスト

    - #### join2

          public static java.lang.String join2​(int no,
                                               java.lang.String arg2,
                                               java.lang.String arg3,
                                               java.lang.String arg4)

      特殊な文字列の連結を行います。 これは、第１引数の数字と、第２、第３、第４の文字列をスペースで連結した文字列を返します。 引数の個数が、可変に出来ないため、完全に決め打ちです。 DROP FUNCTION JOIN2; CREATE FUNCTION JOIN2 ( INTEGER , VARCHAR(2000) , VARCHAR(2000) , VARCHAR(2000) ) RETURNS VARCHAR(4000) DETERMINISTIC -- 引数が同じなら常に同じ値を返すことを示す.(省略時はnot deterministic) PARAMETER STYLE JAVA -- 戻り値のタイプ NO SQL LANGUAGE JAVA -- 関数の中でSQLは実行しないことを示す EXTERNAL NAME 'org.opengion.fukurou.db.Functions.join2' ;
      パラメータ:
        `no` - 第１引数の数字
        `arg2` - 第２引数
        `arg3` - 第３引数
        `arg4` - 第４引数
      戻り値:
        連結したした文字列
      変更履歴:
        6.7.3.0 (2017/01/27) 新規作成, 6.8.5.1 (2018/01/15) org.opengion.javadb → org.opengion.fukurou.db にパッケージ変更

    - #### replace

          public static java.lang.String replace​(java.lang.String source,
                                                 java.lang.String target,
                                                 java.lang.String replacement)

      対象の文字列の部分文字列を置換します。 ただし、source、target、replacement のどれかが、null(ゼロ文字列)の場合は、 処理を実行せず、source をそのまま返します。 DROP FUNCTION REPLACE; CREATE FUNCTION REPLACE ( VARCHAR(2000) , VARCHAR(2000) , VARCHAR(2000) ) RETURNS VARCHAR(4000) DETERMINISTIC -- 引数が同じなら常に同じ値を返すことを示す.(省略時はnot deterministic) PARAMETER STYLE JAVA -- 戻り値のタイプ NO SQL LANGUAGE JAVA -- 関数の中でSQLは実行しないことを示す EXTERNAL NAME 'org.opengion.fukurou.db.Functions.replace' ;
      パラメータ:
        `source` - 対象の文字列
        `target` - 置換したい文字列
        `replacement` - 置換する文字列
      戻り値:
        置換した文字列。
      変更履歴:
        6.7.3.0 (2017/01/27) 新規作成, 6.8.5.1 (2018/01/15) org.opengion.javadb → org.opengion.fukurou.db にパッケージ変更, 6.9.8.0 (2018/05/28) source、target、replacement のどれかが、null(ゼロ文字列)の場合は、source を返す。

    - #### substrb

          public static java.lang.String substrb​(java.lang.String value,
                                                 int start,
                                                 int length)
                                          throws java.io.UnsupportedEncodingException

      substr関数のバイト数版 過去に、hsqldb 用に作成したJava関数です。
      パラメータ:
        `value` - 変換する文字列
        `start` - 変換開始アドレス
        `length` - 変換バイト数
      戻り値:
        変換後文字列
      例外:
        `java.io.UnsupportedEncodingException` - 文字のエンコーディングがサポートされていません。
      変更履歴:
        6.8.5.1 (2018/01/15) org.opengion.hsqldb → org.opengion.fukurou.db にパッケージ変更

    - #### lengthb

          public static int lengthb​(java.lang.String value)
                             throws java.io.UnsupportedEncodingException

      length関数のバイト数版 過去に、hsqldb 用に作成したJava関数です。
      パラメータ:
        `value` - バイト数をカウントする文字列
      戻り値:
        バイト数
      例外:
        `java.io.UnsupportedEncodingException` - 文字のエンコーディングがサポートされていません。
      変更履歴:
        6.8.5.1 (2018/01/15) org.opengion.hsqldb → org.opengion.fukurou.db にパッケージ変更

    - #### checkDelay

          public static java.lang.String checkDelay​(java.lang.String date1,
                                                    java.lang.String date2,
                                                    double sec1,
                                                    double sec2,
                                                    double sec3)

      日時文字列(yyyyMMddHHmmss)の引数1,2に対して、差分の範囲判定を行います。 範囲判定を行う引数 sec1、sec2、sec3 引数には、それぞれ（秒）レベルの値を指定します。 上記の引数の値が、0 の場合は、判定を回避します。 sec1引数と比べて、小さければ 0 を、大きければ 1 を返します。 sec2引数と比べて、小さければ sec1引数の結果を、大きければ 2 を返します。 sec3引数と比べて、小さければ sec2引数の結果を、大きければ 3 を返します。 通常、sec1、sec2、sec3 と、順番に大きな値にしておきます。 小さいと判定された時点で、判定処理は終了します。 date2 - date1 ＜= sec1 ⇒ 0 ＞ sec1 ⇒ 1 ＞ sec2 ⇒ 2 ＞ sec3 ⇒ 3 date1,date2 のどちらかが、null,ゼロ文字列の場合は、判定しません。(return "0")
      パラメータ:
        `date1` - 前比較日時文字列(yyyyMMddHHmmss)
        `date2` - 後比較日時文字列(yyyyMMddHHmmss)
        `sec1` - 比較する秒
        `sec2` - 比較する秒
        `sec3` - 比較する秒
      戻り値:
        判定結果
      変更履歴:
        7.0.5.0 (2019/09/16) 新規作成