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;
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); }
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); }
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); } }
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)); }