diff --git a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/DbMethods/DefaultDbMethod.cs b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/DbMethods/DefaultDbMethod.cs index 92344e3cb..8d8eb88bf 100644 --- a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/DbMethods/DefaultDbMethod.cs +++ b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/DbMethods/DefaultDbMethod.cs @@ -1011,5 +1011,19 @@ namespace SqlSugar var parameterNameA = mode.Args[0].MemberName; return $" DATE_PART('week', {parameterNameA})+1 "; } + + public virtual string TrimEnd(MethodCallExpressionModel mode) + { + var parameterNameA = mode.Args[0].MemberName; + var parameterNameB= mode.Args[1].MemberName; + return $" TRIM(BOTH "+ parameterNameB + " FROM "+ parameterNameA + ") "; + } + public virtual string TrimStart(MethodCallExpressionModel mode) + { + + var parameterNameA = mode.Args[0].MemberName; + var parameterNameB = mode.Args[1].MemberName; + return $" LTRIM(BOTH " + parameterNameB + " FROM " + parameterNameA + ") "; + } } } diff --git a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/DbMethods/IDbMethods.cs b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/DbMethods/IDbMethods.cs index fb8e084bc..55acf760a 100644 --- a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/DbMethods/IDbMethods.cs +++ b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/DbMethods/IDbMethods.cs @@ -114,5 +114,7 @@ namespace SqlSugar string Like(MethodCallExpressionModel mode); string ToSingle(MethodCallExpressionModel mode); string WeekOfYear(MethodCallExpressionModel mode); + string TrimEnd(MethodCallExpressionModel mode); + string TrimStart(MethodCallExpressionModel mode); } } diff --git a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/DbMethods/SqlFunc.cs b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/DbMethods/SqlFunc.cs index 571a165ac..e05b3ebe4 100644 --- a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/DbMethods/SqlFunc.cs +++ b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/DbMethods/SqlFunc.cs @@ -181,6 +181,14 @@ namespace SqlSugar { return thisValue == null ? null : thisValue.ToString().Trim(); } + public static string TrimEnd(object thisValue,string trimChar) + { + throw new NotSupportedException("Can only be used in expressions"); + } + public static string TrimStart(object thisValue, string trimChar) + { + throw new NotSupportedException("Can only be used in expressions"); + } public static bool Contains(string thisValue, string parameterValue) { return thisValue.Contains(parameterValue); @@ -318,6 +326,7 @@ namespace SqlSugar public static int BitwiseInclusiveOR(long left, long right) { throw new NotSupportedException("Can only be used in expressions"); } public static DateTime Oracle_ToDate(string date,string format) { throw new NotSupportedException("Can only be used in expressions"); } public static string Oracle_ToChar(DateTime date, string format) { throw new NotSupportedException("Can only be used in expressions"); } + public static string Oracle_ToChar(object objValue, string format) { throw new NotSupportedException("Can only be used in expressions"); } public static int SqlServer_DateDiff(string dateType,DateTime date1,DateTime date2) { throw new NotSupportedException("Can only be used in expressions"); } public static bool JsonListObjectAny(object jsonListObject, string fieldName, object value) diff --git a/Src/Asp.NetCore2/SqlSugar/Realization/Dm/DmProvider.cs b/Src/Asp.NetCore2/SqlSugar/Realization/Dm/DmProvider.cs index 79d14ccd4..e3ebb266a 100644 --- a/Src/Asp.NetCore2/SqlSugar/Realization/Dm/DmProvider.cs +++ b/Src/Asp.NetCore2/SqlSugar/Realization/Dm/DmProvider.cs @@ -189,7 +189,7 @@ namespace SqlSugar if (Parameter.ParameterName != null && Parameter.ParameterName.ToLower().IsContainsIn(KeyWord)) { var newName = ":p" + i + 100; - sql = sql.Replace(Parameter.ParameterName, newName); + sql = Regex.Replace(sql, Parameter.ParameterName, newName, RegexOptions.IgnoreCase); Parameter.ParameterName = newName; i++; } @@ -214,7 +214,6 @@ namespace SqlSugar return sql; } - public override Action ErrorEvent => it => { if (base.ErrorEvent != null) @@ -226,6 +225,5 @@ namespace SqlSugar Check.ExceptionEasy(it.Message, $"错误:可能是字段太小超出,详细错误:{it.Message} "); } }; - } } diff --git a/Src/Asp.NetCore2/SqlSugar/Realization/Dm/SqlBuilder/DmExpressionContext.cs b/Src/Asp.NetCore2/SqlSugar/Realization/Dm/SqlBuilder/DmExpressionContext.cs index 0010210db..528f781fa 100644 --- a/Src/Asp.NetCore2/SqlSugar/Realization/Dm/SqlBuilder/DmExpressionContext.cs +++ b/Src/Asp.NetCore2/SqlSugar/Realization/Dm/SqlBuilder/DmExpressionContext.cs @@ -226,5 +226,19 @@ namespace SqlSugar var parameter = model.Args[0]; return string.Format(" CAST({0} AS decimal(18,4))", parameter.MemberName); } + + public override string TrimEnd(MethodCallExpressionModel mode) + { + var parameterNameA = mode.Args[0].MemberName; + var parameterNameB = mode.Args[1].MemberName; + return $" RTRIM({parameterNameA}, {parameterNameB}) "; + } + public override string TrimStart(MethodCallExpressionModel mode) + { + + var parameterNameA = mode.Args[0].MemberName; + var parameterNameB = mode.Args[1].MemberName; + return $" LTRIM({parameterNameA}, {parameterNameB}) "; + } } } diff --git a/Src/Asp.NetCore2/SqlSugar/Realization/MySql/SqlBuilder/MySqlExpressionContext.cs b/Src/Asp.NetCore2/SqlSugar/Realization/MySql/SqlBuilder/MySqlExpressionContext.cs index d7a04e770..248dbea86 100644 --- a/Src/Asp.NetCore2/SqlSugar/Realization/MySql/SqlBuilder/MySqlExpressionContext.cs +++ b/Src/Asp.NetCore2/SqlSugar/Realization/MySql/SqlBuilder/MySqlExpressionContext.cs @@ -245,5 +245,18 @@ namespace SqlSugar return $" JSON_CONTAINS({model.Args[0].MemberName},'{{\"{model.Args[1].MemberValue}\":\"{model.Args[2].MemberValue.ObjToStringNoTrim().ToSqlFilter()}\"}}')"; } } + public override string TrimEnd(MethodCallExpressionModel mode) + { + var parameterNameA = mode.Args[0].MemberName; + var parameterNameB = mode.Args[1].MemberName; + return $" TRIM(TRAILING {parameterNameA} FROM {parameterNameB}) "; + } + public override string TrimStart(MethodCallExpressionModel mode) + { + + var parameterNameA = mode.Args[0].MemberName; + var parameterNameB = mode.Args[1].MemberName; + return $" TRIM(LEADING {parameterNameA} FROM {parameterNameB}) "; + } } } diff --git a/Src/Asp.NetCore2/SqlSugar/Realization/Oracle/OracleProvider.cs b/Src/Asp.NetCore2/SqlSugar/Realization/Oracle/OracleProvider.cs index 54cf00ae4..52aca2e74 100644 --- a/Src/Asp.NetCore2/SqlSugar/Realization/Oracle/OracleProvider.cs +++ b/Src/Asp.NetCore2/SqlSugar/Realization/Oracle/OracleProvider.cs @@ -134,7 +134,7 @@ namespace SqlSugar if (parameters.Count(it => it.ParameterName.StartsWith(Parameter.ParameterName)) == 1) { var newName = Parameter.ParameterName + "_01"; - sql = sql.Replace(Parameter.ParameterName, newName); + sql = Regex.Replace(sql, Parameter.ParameterName, newName, RegexOptions.IgnoreCase); Parameter.ParameterName = newName; } else diff --git a/Src/Asp.NetCore2/SqlSugar/Realization/Oracle/SqlBuilder/OracleExpressionContext.cs b/Src/Asp.NetCore2/SqlSugar/Realization/Oracle/SqlBuilder/OracleExpressionContext.cs index 6b18de28a..f5b6d4814 100644 --- a/Src/Asp.NetCore2/SqlSugar/Realization/Oracle/SqlBuilder/OracleExpressionContext.cs +++ b/Src/Asp.NetCore2/SqlSugar/Realization/Oracle/SqlBuilder/OracleExpressionContext.cs @@ -353,5 +353,18 @@ namespace SqlSugar { return string.Format("instr ({0},{1},1,1) ", model.Args[0].MemberName, model.Args[1].MemberName); } + public override string TrimEnd(MethodCallExpressionModel mode) + { + var parameterNameA = mode.Args[0].MemberName; + var parameterNameB = mode.Args[1].MemberName; + return $" RTRIM({parameterNameA}, {parameterNameB}) "; + } + public override string TrimStart(MethodCallExpressionModel mode) + { + + var parameterNameA = mode.Args[0].MemberName; + var parameterNameB = mode.Args[1].MemberName; + return $" LTRIM({parameterNameA}, {parameterNameB}) "; + } } } diff --git a/Src/Asp.NetCore2/SqlSugar/Realization/SqlServer/SqlBuilder/SqlServerExpressionContext.cs b/Src/Asp.NetCore2/SqlSugar/Realization/SqlServer/SqlBuilder/SqlServerExpressionContext.cs index 8b098389e..21da84193 100644 --- a/Src/Asp.NetCore2/SqlSugar/Realization/SqlServer/SqlBuilder/SqlServerExpressionContext.cs +++ b/Src/Asp.NetCore2/SqlSugar/Realization/SqlServer/SqlBuilder/SqlServerExpressionContext.cs @@ -109,6 +109,20 @@ namespace SqlSugar , model.Args[1].MemberName ); } + public override string TrimEnd(MethodCallExpressionModel mode) + { + var parameterNameA = mode.Args[0].MemberName; + var parameterNameB = mode.Args[1].MemberName; + return $" RTRIM(REPLACE({parameterNameA}, {parameterNameB}, '')) "; + } + public override string TrimStart(MethodCallExpressionModel mode) + { + + var parameterNameA = mode.Args[0].MemberName; + var parameterNameB = mode.Args[1].MemberName; + return $" LTRIM(REPLACE({parameterNameA},{parameterNameB}, '')) "; + } } + } \ No newline at end of file diff --git a/Src/Asp.NetCore2/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteExpressionContext.cs b/Src/Asp.NetCore2/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteExpressionContext.cs index 3c7f00bc2..3e8f39eba 100644 --- a/Src/Asp.NetCore2/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteExpressionContext.cs +++ b/Src/Asp.NetCore2/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteExpressionContext.cs @@ -279,7 +279,23 @@ namespace SqlSugar public override string CharIndex(MethodCallExpressionModel model) { - throw new NotSupportedException("Slqite Not Supported CharIndex"); + var parameterNameA = model.Args[0].MemberName; + var parameterNameB = model.Args[1].MemberName; + return $" INSTR(LOWER({parameterNameA}), LOWER({parameterNameB})) "; + } + + public override string TrimEnd(MethodCallExpressionModel mode) + { + var parameterNameA = mode.Args[0].MemberName; + var parameterNameB = mode.Args[1].MemberName; + return $" RTRIM(REPLACE({parameterNameA}, {parameterNameB}, '')) "; + } + public override string TrimStart(MethodCallExpressionModel mode) + { + + var parameterNameA = mode.Args[0].MemberName; + var parameterNameB = mode.Args[1].MemberName; + return $" LTRIM(REPLACE({parameterNameA}, {parameterNameB}, '')) "; } } }