예제 #1
0
            // "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));
            }
예제 #2
0
            // 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)));
            }