// "mod"(11 mod 2) is not an Operator but a function: MOD(numer1,number2) protected override string ToSqlString(ArraySegment segment) { for (int i = 0; i < segment.Segments.Length; i++) { if (segment.Segments[i] is OperatorSegment) { OperatorSegment operatorSegment = segment.Segments[i] as OperatorSegment; if (operatorSegment.Operator == "mod") { string left = ToSqlString(segment.Segments[i - 1]); string right = ToSqlString(segment.Segments[i + 1]); segment.Segments[i] = new StringSegment(string.Format("MOD({0},{1})", left, right)); segment.Segments[i - 1] = new StringSegment(string.Empty); segment.Segments[i + 1] = new StringSegment(string.Empty); } } } return(base.ToSqlString(segment)); }
// fix: 11 div 2 is 5 protected override string ToSqlString(ArraySegment segment) { List <Segment> segments = new List <Segment>(); for (int i = 0; i < segment.Segments.Length; i++) { if (segment.Segments[i] is OperatorSegment) { OperatorSegment operatorSegment = segment.Segments[i] as OperatorSegment; if (operatorSegment.Operator == "div") { segments.Add(new OperatorSegment("mul")); segments.Add(new ConstantSegment("1.0", 1.0)); segments.Add(segment.Segments[i]); continue; } } segments.Add(segment.Segments[i]); } return(base.ToSqlString(new ArraySegment(segment.Value, segments))); }