コード例 #1
0
        public BinaryConditionInfo Parse(SelectAtomContext ctx)
        {
            BinaryConditionInfo rslt = null;

            if (Binary_compare != null)
            {
                rslt = Binary_compare.Parse(ctx);
            }

            //SqlContext.Condition_Stack.Peek().Conditions.Add(
            //    new ConditionComplexInfo {  Condition = rslt});

            //var condition = rslt.Condition.Conditions[0].Condition;

            if (Condition_option != null)
            {
                if (string.Compare(Condition_option.Option, "?", true) == 0)
                {
                    rslt.Required = false;
                }
                else if (string.Compare(Condition_option.Option, "#", true) == 0)
                {
                    rslt.Required = true;
                }

                //if ( rslt.LeftValue.IsParameter )
                //{
                //    rslt.
                //}
                //foreach (var p in rslt.LeftValue.IsParameter)
                //{
                //    p.NullAble = !condition.Required;
                //}
            }
            if (this.Search_option != null)
            {
                if (Search_option == null || Search_option.Option_expression == null ||
                    Search_option.Option_expression.Option_list == null ||
                    Search_option.Option_expression.Option_list.Options == null)
                {
                    return(rslt);
                }

                foreach (var option in Search_option.Option_expression.Option_list.Options)
                {
                    rslt.Options.Add(
                        new SqlOption()
                    {
                        Name = option.Option_name.Text.Replace("'", ""), Value = option.Option_value.text.Replace("'", "")
                    });
                }
            }



            return(rslt);
        }
コード例 #2
0
ファイル: Binary_Compare.cs プロジェクト: koksaver/CodeHelper
        public BinaryConditionInfo Parse(SelectAtomContext ctx)
        {
            var condition = new BinaryConditionInfo();
            if (Left_table_field != null)
            {
                var temp = Left_table_field.Parse(ctx);
                condition.LeftValue = temp;
            }

            if (Right_table_field != null)
            {
                condition.RightValue = Right_table_field.Parse(ctx);
            }

            if (Predication != null)
            {
                condition.RightValue = new PredicationFieldInfo();
                Predication.Parse(condition.RightValue as PredicationFieldInfo);
            }
            switch (Binary_operater.Operater.ToLower())
            {
                case "=":
                    condition.ConditionType = ConditionType.Equal;
                    break;
                case "<":
                    condition.ConditionType = ConditionType.Lt;
                    break;
                case ">":
                    condition.ConditionType = ConditionType.Gt;
                    break;
                case "!=":
                    condition.ConditionType = ConditionType.NotEqual;
                    break;
                case "<=":
                    condition.ConditionType = ConditionType.LtEqual;
                    break;
                case ">=":
                    condition.ConditionType = ConditionType.GtEqual;
                    break;
                case "in":
                    condition.ConditionType = ConditionType.In;
                    break;
                case "like":
                    var c = new LikeConditionInfo();
                    c.LeftValue = condition.LeftValue;
                    c.RightValue = condition.RightValue;
                    condition = c;
                    condition.ConditionType = ConditionType.Like;

                    break;
                case "between":
                    condition.ConditionType = ConditionType.Between;
                    break;
                case "exists":
                    condition.ConditionType = ConditionType.Exists;
                    break;

                default:
                    condition.ConditionType = ConditionType.Unknown;
                    break;
            }

            return condition;
        }
コード例 #3
0
        public BinaryConditionInfo Parse(SelectAtomContext ctx)
        {
            var condition = new BinaryConditionInfo();

            if (Left_table_field != null)
            {
                var temp = Left_table_field.Parse(ctx);
                condition.LeftValue = temp;
            }

            if (Right_table_field != null)
            {
                condition.RightValue = Right_table_field.Parse(ctx);
            }

            if (Predication != null)
            {
                condition.RightValue = new PredicationFieldInfo();
                Predication.Parse(condition.RightValue as PredicationFieldInfo);
            }
            switch (Binary_operater.Operater.ToLower())
            {
            case "=":
                condition.ConditionType = ConditionType.Equal;
                break;

            case "<":
                condition.ConditionType = ConditionType.Lt;
                break;

            case ">":
                condition.ConditionType = ConditionType.Gt;
                break;

            case "!=":
                condition.ConditionType = ConditionType.NotEqual;
                break;

            case "<=":
                condition.ConditionType = ConditionType.LtEqual;
                break;

            case ">=":
                condition.ConditionType = ConditionType.GtEqual;
                break;

            case "in":
                condition.ConditionType = ConditionType.In;
                break;

            case "like":
                var c = new LikeConditionInfo();
                c.LeftValue             = condition.LeftValue;
                c.RightValue            = condition.RightValue;
                condition               = c;
                condition.ConditionType = ConditionType.Like;

                break;

            case "between":
                condition.ConditionType = ConditionType.Between;
                break;

            case "exists":
                condition.ConditionType = ConditionType.Exists;
                break;

            default:
                condition.ConditionType = ConditionType.Unknown;
                break;
            }

            return(condition);
        }