protected override void BuildPredicate(ISqlPredicate predicate)
        {
            var newpredicate = predicate;

            switch (predicate.ElementType)
            {
            case QueryElementType.LikePredicate:
                var p = (SqlPredicate.Like)predicate;

                var param2 = GetParm(p.Expr2 as IValueContainer, p.Expr1.SystemType);

                if (param2 != null)
                {
                    if (param2 is SqlValue value && value.Value == null)
                    {
                        if (p.IsNot)
                        {
                            newpredicate = new SqlPredicate.ExprExpr(p.Expr1, SqlPredicate.Operator.NotEqual, p.Expr2);
                        }
                        else
                        {
                            newpredicate = new SqlPredicate.ExprExpr(p.Expr1, SqlPredicate.Operator.Equal, p.Expr2);
                        }
                    }
                    else
                    {
                        newpredicate = new SqlPredicate.Like(p.Expr1, p.IsNot, param2, p.Escape);
                    }
                }

                break;
Exemple #2
0
        protected override void BuildLikePredicate(SqlPredicate.Like predicate)
        {
            if (predicate.Expr2 is SqlValue)
            {
                var value = ((SqlValue)predicate.Expr2).Value;

                if (value != null)
                {
                    var text  = ((SqlValue)predicate.Expr2).Value.ToString();
                    var ntext = text.Replace("[", "[[]");

                    if (text != ntext)
                    {
                        predicate = new SqlPredicate.Like(predicate.Expr1, predicate.IsNot, new SqlValue(ntext), predicate.Escape);
                    }
                }
            }
            else if (predicate.Expr2 is SqlParameter)
            {
                var p = ((SqlParameter)predicate.Expr2);
                p.ReplaceLike = true;
            }

            if (predicate.Escape != null)
            {
                if (predicate.Expr2 is SqlValue && predicate.Escape is SqlValue)
                {
                    var value = ((SqlValue)predicate.Expr2).Value;

                    if (value != null)
                    {
                        var text = ((SqlValue)predicate.Expr2).Value.ToString();
                        var val  = new SqlValue(ReescapeLikeText(text, (char)((SqlValue)predicate.Escape).Value));

                        predicate = new SqlPredicate.Like(predicate.Expr1, predicate.IsNot, val, null);
                    }
                }
                else if (predicate.Expr2 is SqlParameter)
                {
                    var p = (SqlParameter)predicate.Expr2;

                    if (p.LikeStart != null)
                    {
                        var value = (string)p.Value;

                        if (value != null)
                        {
                            value = value.Replace("[", "[[]").Replace("~%", "[%]").Replace("~_", "[_]").Replace("~~", "[~]");
                            p     = new SqlParameter(p.SystemType, p.Name, value)
                            {
                                DbSize = p.DbSize, DataType = p.DataType, IsQueryParameter = p.IsQueryParameter
                            };
                            predicate = new SqlPredicate.Like(predicate.Expr1, predicate.IsNot, p, null);
                        }
                    }
                }
            }

            base.BuildLikePredicate(predicate);
        }
        protected override void BuildLikePredicate(SqlPredicate.Like predicate)
        {
            if (predicate.Expr2 is SqlValue)
            {
                var value = ((SqlValue)predicate.Expr2).Value;

                if (value != null)
                {
                    var text  = ((SqlValue)predicate.Expr2).Value.ToString();
                    var ntext = text.Replace("[", "[[]");

                    if (text != ntext)
                    {
                        predicate = new SqlPredicate.Like(predicate.Expr1, predicate.IsNot, new SqlValue(ntext), predicate.Escape);
                    }
                }
            }
            else if (predicate.Expr2 is SqlParameter)
            {
                var p = ((SqlParameter)predicate.Expr2);
                p.ReplaceLike = true;
            }

            base.BuildLikePredicate(predicate);
        }
Exemple #4
0
        protected override void BuildLikePredicate(SqlPredicate.Like predicate)
        {
            if (predicate.Expr2 is SqlValue sqlValue)
            {
                var value = sqlValue.Value;

                if (value != null)
                {
                    var text = value.ToString() !;

                    var ntext = predicate.IsSqlLike ? text : DataTools.EscapeUnterminatedBracket(text);

                    if (text != ntext)
                    {
                        predicate = new SqlPredicate.Like(predicate.Expr1, predicate.IsNot, new SqlValue(ntext), predicate.Escape, predicate.IsSqlLike);
                    }
                }
            }
            else if (predicate.Expr2 is SqlParameter p)
            {
                p.ReplaceLike = predicate.IsSqlLike != true;
            }

            if (predicate.Escape != null)
            {
                if (predicate.Expr2 is SqlValue escSqlValue && predicate.Escape is SqlValue escapeValue)
                {
                    var value = escSqlValue.Value;

                    if (value != null)
                    {
                        var text = value.ToString() !;
                        var val  = new SqlValue(ReescapeLikeText(text, (char)escapeValue.Value !));

                        predicate = new SqlPredicate.Like(predicate.Expr1, predicate.IsNot, val, null, predicate.IsSqlLike);
                    }
                }
                else if (predicate.Expr2 is SqlParameter p)
                {
                    if (p.LikeStart != null)
                    {
                        var value = (string?)p.Value;

                        if (value != null)
                        {
                            value = (predicate.IsSqlLike ? value : DataTools.EscapeUnterminatedBracket(value) !)
                                    .Replace("~%", "[%]").Replace("~_", "[_]").Replace("~~", "[~]");
                            p = new SqlParameter(p.Type, p.Name, value)
                            {
                                IsQueryParameter = p.IsQueryParameter
                            };
                            predicate = new SqlPredicate.Like(predicate.Expr1, predicate.IsNot, p, null, predicate.IsSqlLike);
                        }
                    }
                }
            }
        public override ISqlPredicate ConvertLikePredicate(MappingSchema mappingSchema, SqlPredicate.Like predicate,
                                                           EvaluationContext context)
        {
            //Informix cannot process parameter in Like template (only Informix provider, not InformixDB2)
            //
            if (context.ParameterValues != null)
            {
                var exp2 = TryConvertToValue(predicate.Expr2, context);

                if (!ReferenceEquals(exp2, predicate.Expr2))
                {
                    predicate = new SqlPredicate.Like(predicate.Expr1, predicate.IsNot, exp2, predicate.Escape);
                }
            }

            return(predicate);
        }
Exemple #6
0
        protected override void BuildLikePredicate(SqlPredicate.Like predicate)
        {
            if (predicate.IsNot)
            {
                StringBuilder.Append("NOT ");
            }

            var precedence = GetPrecedence(predicate);

            BuildExpression(precedence, predicate.Expr1);
            StringBuilder.Append(" LIKE ");
            BuildExpression(precedence, predicate.Expr2);

            if (predicate.Escape != null)
            {
                StringBuilder.Append(" ESCAPE ");
                BuildExpression(precedence, predicate.Escape);
            }
        }
Exemple #7
0
        protected override void BuildLikePredicate(SqlPredicate.Like predicate)
        {
            if (predicate.Expr2 is SqlValue sqlValue)
            {
                var value = sqlValue.Value;

                if (value != null)
                {
                    var text  = value.ToString() !;
                    var ntext = predicate.IsSqlLike ? text :  DataTools.EscapeUnterminatedBracket(text);

                    if (text != ntext)
                    {
                        predicate = new SqlPredicate.Like(predicate.Expr1, predicate.IsNot, new SqlValue(ntext), predicate.Escape, predicate.IsSqlLike);
                    }
                }
            }
            else if (predicate.Expr2 is SqlParameter p)
            {
                p.ReplaceLike = true;
            }

            base.BuildLikePredicate(predicate);
        }
        public override ISqlPredicate ConvertLikePredicate(MappingSchema mappingSchema, SqlPredicate.Like predicate,
                                                           EvaluationContext context)
        {
            if (predicate.Escape != null)
            {
                return(new SqlPredicate.Like(predicate.Expr1, predicate.IsNot, predicate.Expr2, null));
            }

            return(base.ConvertLikePredicate(mappingSchema, predicate, context));
        }