in empire-db/src/main/java/org/apache/empire/db/expr/compare/DBCompareColExpr.java [205:289]
public void addCompareExpr(DBSQLBuilder sql, long context)
{ // Assemble expression
DBCmpType op = cmpop;
if (ObjectUtils.isEmpty(value))
{ // Null oder Not Null!
op = DBCmpType.getNullType(op);
}
// Array Separator
String arraySep;
switch (op)
{ // other than default:
case BETWEEN:
case NOTBETWEEN:
arraySep = " AND ";
break;
case IN:
case NOTIN:
arraySep = ", ";
break;
default:
arraySep = (expr.getDataType().isNumeric() ? "+" : sql.getPhrase(DBSqlPhrase.SQL_CONCAT_EXPR));
break;
}
// Add comparison operator and value
String suffix = null;
switch (op)
{
case EQUAL:
sql.append("=");
break;
case NOTEQUAL:
sql.append("<>");
break;
case LESSTHAN:
sql.append("<");
break;
case MOREOREQUAL:
sql.append(">=");
break;
case GREATERTHAN:
sql.append(">");
break;
case LESSOREQUAL:
sql.append("<=");
break;
case LIKE:
sql.append(" LIKE ");
break;
case NOTLIKE:
sql.append(" NOT LIKE ");
break;
case NULL:
sql.append(" IS NULL");
return;
case NOTNULL:
sql.append(" IS NOT NULL");
return;
case BETWEEN:
sql.append(" BETWEEN ");
break;
case NOTBETWEEN:
sql.append(" NOT BETWEEN ");
break;
case IN:
sql.append(" IN (");
if (value instanceof DBCommandExpr)
context |= CTX_NOPARENTHESIS;
suffix = ")";
break;
case NOTIN:
sql.append(" NOT IN (");
if (value instanceof DBCommandExpr)
context |= CTX_NOPARENTHESIS;
suffix = ")";
break;
default:
// NONE
sql.append(" ");
}
// append value
sql.appendValue(expr.getDataType(), value, context, arraySep);
// append suffix
if (suffix != null)
sql.append(suffix);
}