package jef.database.query.function; import java.util.List; import jef.database.jsqlparser.expression.Function; import jef.database.jsqlparser.expression.LongValue; import jef.database.jsqlparser.visitor.Expression; import jef.database.query.SqlExpression; import jef.tools.StringUtils; public class EmuSQLServerTrunc extends BaseArgumentSqlFunction{ private SqlExpression INTEGER=new SqlExpression("integer"); private SqlExpression FLOAT=new SqlExpression("float"); @Override public String getName() { return "trunc"; } @Override public Expression renderExpression(List<Expression> arguments) { Expression input=arguments.get(0); Expression digital=null; if(arguments.size()>1){ digital=arguments.get(1); }else{ digital=LongValue.L0; } int numeric=-1; String numricStr=digital.toString();//截断后保留的位数 if(StringUtils.isNumeric(numricStr)){ numeric=Integer.parseInt(numricStr); } Function roundFunc=new Function("round",input,digital,LongValue.L1); if(numeric==0){ return new Function("convert",INTEGER, roundFunc); }else{ return new Function("convert",FLOAT, roundFunc); } } }