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

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

package org.h2.function;

import org.h2.engine.Database;
import org.h2.engine.Session;
import org.h2.expression.Expression;
import org.h2.util.StringUtils;
import org.h2.value.Value;
import org.h2.value.ValueNull;
import org.h2.value.ValueString;

public class Concat_ws {
    public static final String NAME = "CONCAT_WS";

    public Value getValueWithArgs(Session session, Expression[] args, Database database) {
        Value result = ValueNull.INSTANCE;
        if(Functions.isNullValue(args[0],session))
            return result;
        String separator =args[0].getValue(session).getString();
        for (int i = 1; i < args.length; i++) {
            Value v =args[i].getValue(session);
            if (v == ValueNull.INSTANCE) {
                continue;
            }
            if (result == ValueNull.INSTANCE) {
                result = v;
            } else {
                String tmp = v.getString();
                if (!StringUtils.isNullOrEmpty(separator)
                        && !StringUtils.isNullOrEmpty(tmp)) {
                    tmp = separator.concat(tmp);
                }
                result = ValueString.get(result.getString().concat(tmp),
                        database.getMode().treatEmptyStringsAsNull);
            }
        }
        if (result == ValueNull.INSTANCE) {
            result = ValueString.get("", database.getMode().treatEmptyStringsAsNull);
        }
        return result;
    }

    public void checkParameterCount(int len) {
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy