All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.h2.function.Functions Maven / Gradle / Ivy

package org.h2.function;

import org.h2.engine.Session;
import org.h2.expression.Expression;
import org.h2.expression.Function;
import org.h2.util.StatementBuilder;
import org.h2.value.Value;
import org.h2.value.ValueNull;

/**
 * Created by shihailong on 2017/12/14.
 */
public class Functions {
    public static final int TYPE_TRIM = 78;
    public static final int TYPE_EXTRACT = 120;

    public static final int TYPE_DATE_FORMAT = 1024;
    public static final int TYPE_VERSION = 1025;
    public static final int TYPE_DATABASE = 1026;
    public static final int TYPE_CONNECTION_ID = 1027;
    public static final int TYPE_ATAN = 1028;
    public static final int TYPE_BIT_LENGTH = 1029;
    public static final int TYPE_COMPRESS = 1031;
    public static final int TYPE_UNCOMPRESS = 1032;
    public static final int TYPE_DATEDIFF = 1033;
    public static final int TYPE_CURTIME = 1034;
    public static final int TYPE_CURRENT_USER = 1036;
    public static final int TYPE_CONCAT = 1037;
    public static final int TYPE_CONCAT_WS = 1038;
    public static final int TYPE_ENCODE = 1041;
    public static final int TYPE_DECODE = 1042;
    public static final int TYPE_HOUR = 1044;
    public static final int TYPE_LOG = 1045;
    public static final int TYPE_LN = 1046;
    public static final int TYPE_LOG10 = 1049;
    public static final int TYPE_OCTET_LENGTH = 1047;
    public static final int TYPE_SECOND = 1048;
    public static final int TYPE_SOUNDEX = 1050;
    public static final int TYPE_SQRT = 1051;
    public static final int TYPE_TRUNCATE = 1054;
    public static final int TYPE_WEEK = 1055;
    public static final int TYPE_UNIX_TIMESTAMP = 1056;
    public static final int TYPE_SUB_DATE = 1057;
    public static final int TYPE_LTRIM = 1058;
    public static final int TYPE_RTRIM = 1059;
    public static final int TYPE_HISTORY = 1060;
    public static final int TYPE_RANGE = 1061;


    static boolean isNullValue(Expression expression, Session session) {
        if (expression == null) {
            return true;
        }
        Value value = expression.getValue(session);
        return value == null || value.equals(ValueNull.INSTANCE);
    }
    public static boolean isNullValueAll(Expression[] args, Session session) {
        for (Expression e : args) {
            if (isNullValue(e,session))
                return true;
        }
        return false;
    }

    public static String getSQL(org.h2.expression.Function function){
        if(function.getFunctionType() == Function.DATE_DIFF){
            StatementBuilder buff = new StatementBuilder(function.getName());
            buff.append('(');
            Expression[] args = function.getArgs();
            for (int i=0; i< args.length ; ++i) {
                buff.appendExceptFirst(", ");
                String sql = args[i].getSQL();
                if(i == 0 && sql.startsWith("'") && sql.endsWith("'")){
                    sql = sql.substring(1, sql.length()-1);
                }
                buff.append(sql);
            }
            return buff.append(')').toString();
        }
        return null;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy