public override SqlClauseWithValue MakeModulusClause(string fieldName)
{
StringBuilder sb = DbCaches.StringBuilders.Get();
SqlClauseWithValue retVal = DbCaches.Clauses.Get();
switch (Type)
{
case DatabaseType.ORACLE:
sb.Append("MOD(");
sb.Append(fieldName);
sb.Append(", ");
retVal.PartBeforeValue = sb.ToString();
retVal.PartAfterValue = ")";
break;
case DatabaseType.SQLSERVER:
sb.Append("(");
sb.Append(fieldName);
sb.Append(" % ");
retVal.PartBeforeValue = sb.ToString();
retVal.PartAfterValue = ")";
break;
case DatabaseType.ACCESS:
sb.Append("(");
sb.Append(fieldName);
sb.Append(" MOD ");
retVal.PartBeforeValue = sb.ToString();
retVal.PartAfterValue = ")";
break;
default:
throw new NotImplementedException("Modulus clause not implemented for DB type " + Type);
}
DbCaches.StringBuilders.Return(sb);
return retVal;
}