1 34 package smallsql.database; 35 36 37 40 final class ExpressionFunctionSign extends ExpressionFunctionReturnInt { 41 42 43 final int getFunction() { 44 return SQLTokenizer.SIGN; 45 } 46 47 48 final int getInt() throws Exception { 49 if(param1.isNull()) return 0; 50 switch(ExpressionArithmetic.getBestNumberDataType(param1.getDataType())){ 51 case SQLTokenizer.INT: 52 int intValue = param1.getInt(); 53 if(intValue < 0) 54 return -1; 55 if(intValue > 0) 56 return 1; 57 return 0; 58 case SQLTokenizer.BIGINT: 59 long longValue = param1.getLong(); 60 if(longValue < 0) 61 return -1; 62 if(longValue > 0) 63 return 1; 64 return 0; 65 case SQLTokenizer.MONEY: 66 longValue = param1.getMoney(); 67 if(longValue < 0) 68 return -1; 69 if(longValue > 0) 70 return 1; 71 return 0; 72 case SQLTokenizer.DECIMAL: 73 return param1.getNumeric().getSignum(); 74 case SQLTokenizer.DOUBLE: 75 double doubleValue = param1.getDouble(); 76 if(doubleValue < 0) 77 return -1; 78 if(doubleValue > 0) 79 return 1; 80 return 0; 81 default: 82 throw new Error (); 83 } 84 } 85 } 86 | Popular Tags |