protected virtual string CompileBasicStringCondition(SqlResult ctx, BasicStringCondition x) { var column = Wrap(x.Column); var value = Resolve(ctx, x.Value) as string; if (value == null) { throw new ArgumentException("Expecting a non nullable string"); } var method = x.Operator; if (new[] { "starts", "ends", "contains", "like" }.Contains(x.Operator)) { method = "LIKE"; switch (x.Operator) { case "starts": value = $"{value}%"; break; case "ends": value = $"%{value}"; break; case "contains": value = $"%{value}%"; break; } } string sql; if (!x.CaseSensitive) { column = CompileLower(column); value = value.ToLowerInvariant(); } if (x.Value is UnsafeLiteral) { sql = $"{column} {checkOperator(method)} {value}"; } else { sql = $"{column} {checkOperator(method)} {Parameter(ctx, value)}"; } if (!string.IsNullOrEmpty(x.EscapeCharacter)) { sql = $"{sql} ESCAPE '{x.EscapeCharacter}'"; } return(x.IsNot ? $"NOT ({sql})" : sql); }
protected virtual string CompileBasicStringCondition(SqlResult ctx, BasicStringCondition x) { var column = Wrap(x.Column); var value = x.Value as string; if (value == null) { throw new ArgumentException("The value should be a non null value of type string"); } if (!x.CaseSensitive) { x.Value = value.ToLower(); column = CompileLower(column); } var method = x.Operator; if (new[] { "starts", "ends", "contains", "like" }.Contains(x.Operator)) { method = "LIKE"; if (x.Operator == "starts") { x.Value = x.Value + "%"; } else if (x.Operator == "ends") { x.Value = "%" + x.Value; } else if (x.Operator == "contains") { x.Value = "%" + x.Value + "%"; } else { x.Value = x.Value; } } var sql = column + " " + method + " " + Parameter(ctx, x.Value); if (x.IsNot) { return($"NOT ({sql})"); } return(sql); }
private static void AppendSearchCondition(BasicStringCondition x, ref string value, ref string method) { method = "LIKE"; if (x.Operator == "starts") { value = $"{value}%"; } else if (x.Operator == "ends") { value = $"%{value}"; } else if (x.Operator == "contains") { value = $"%{value}%"; } }
protected virtual string CompileBasicStringCondition(BasicStringCondition x) { var column = Wrap(x.Column); if (!x.CaseSensitive) { x.Value = x.Value.ToLower(); column = CompileLower(column); } var method = x.Operator; if (new[] { "starts", "ends", "contains", "like" }.Contains(x.Operator)) { method = "LIKE"; if (x.Operator == "starts") { x.Value = x.Value + "%"; } else if (x.Operator == "ends") { x.Value = "%" + x.Value; } else if (x.Operator == "contains") { x.Value = "%" + x.Value + "%"; } else { x.Value = x.Value; } } var sql = column + " " + method + " " + Parameter(x.Value); if (x.IsNot) { return($"NOT ({sql})"); } return(sql); }
private string BuildSQLQuery(SqlResult context, BasicStringCondition x, ref string value, ref string column, string method) { string sql; if (!x.CaseSensitive) { column = CompileLower(column); value = value.ToLowerInvariant(); } if (x.Value is UnsafeLiteral) { sql = $"{column} {checkOperator(method)} {value}"; } else { sql = $"{column} {checkOperator(method)} {Parameter(context, value)}"; } return(sql); }
protected virtual string CompileBasicStringCondition(SqlResult context, BasicStringCondition x) { if (!(Resolve(context, x.Value) is string value)) { throw new ArgumentException("Expecting a non nullable string"); } string[] basicStringConditions = new[] { "starts", "ends", "contains", "like" }; string column = wrapper.Wrap(x.Column); string method = x.Operator; if (basicStringConditions.Contains(x.Operator)) { AppendSearchCondition(x, ref value, ref method); } string sql; sql = BuildSQLQuery(context, x, ref value, ref column, method); return(x.IsNot ? $"NOT ({sql})" : sql); }