From 27f8069c7e1f91881c43e4029437efe7fae5ee54 Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Thu, 14 Sep 2023 18:12:19 +0800 Subject: [PATCH] Add SqlFunc.CharIndexNew --- .../SqlSugar/ExpressionsToSql/DbMethods/DefaultDbMethod.cs | 6 +++++- .../SqlSugar/ExpressionsToSql/DbMethods/IDbMethods.cs | 1 + Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/SqlFunc.cs | 2 ++ .../Kdbndp/SqlBuilder/KdbndpExpressionContext.cs | 4 ++++ .../PostgreSQL/SqlBuilder/PostgreSQLExpressionContext.cs | 4 ++++ .../SqlServer/SqlBuilder/SqlServerExpressionContext.cs | 4 ++++ 6 files changed, 20 insertions(+), 1 deletion(-) diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/DefaultDbMethod.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/DefaultDbMethod.cs index 20b5346db..aab59ff34 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/DefaultDbMethod.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/DefaultDbMethod.cs @@ -514,11 +514,15 @@ namespace SqlSugar } } return reslut.ToString(); - } + } public virtual string CharIndex(MethodCallExpressionModel model) { return string.Format("CHARINDEX ({0},{1})", model.Args[0].MemberName, model.Args[1].MemberName); } + public virtual string CharIndexNew(MethodCallExpressionModel model) + { + return CharIndex(model); + } public virtual string ToVarchar(MethodCallExpressionModel model) { diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/IDbMethods.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/IDbMethods.cs index 4bab7bc44..f24f141f0 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/IDbMethods.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/IDbMethods.cs @@ -69,6 +69,7 @@ namespace SqlSugar string GetDate(); string GetRandom(); string CharIndex(MethodCallExpressionModel model); + string CharIndexNew(MethodCallExpressionModel model); string BitwiseAnd(MethodCallExpressionModel model); string BitwiseInclusiveOR(MethodCallExpressionModel model); diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/SqlFunc.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/SqlFunc.cs index f6e4b0112..8e8341007 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/SqlFunc.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/SqlFunc.cs @@ -345,7 +345,9 @@ namespace SqlSugar /// public static Subqueryable Subqueryable() where T:class,new(){ throw new NotSupportedException("Can only be used in expressions");} public static CaseThen IF(bool condition) { throw new NotSupportedException("Can only be used in expressions"); } + [Obsolete("多库下参数顺序不一至,为了保证多库下更好体验请使用 SqlFunc.CharIndexNew")] public static int CharIndex(string findChar,string searchValue) { throw new NotSupportedException("Can only be used in expressions"); } + public static int CharIndexNew(string stringValue, string charValue) { throw new NotSupportedException("Can only be used in expressions"); } public static int BitwiseAnd(int left, int right) { throw new NotSupportedException("Can only be used in expressions"); } public static int BitwiseInclusiveOR(int left, int right) { throw new NotSupportedException("Can only be used in expressions"); } public static int BitwiseAnd(long left, long right) { throw new NotSupportedException("Can only be used in expressions"); } diff --git a/Src/Asp.Net/SqlSugar/Realization/Kdbndp/SqlBuilder/KdbndpExpressionContext.cs b/Src/Asp.Net/SqlSugar/Realization/Kdbndp/SqlBuilder/KdbndpExpressionContext.cs index 4c4cd21a7..ae55f7263 100644 --- a/Src/Asp.Net/SqlSugar/Realization/Kdbndp/SqlBuilder/KdbndpExpressionContext.cs +++ b/Src/Asp.Net/SqlSugar/Realization/Kdbndp/SqlBuilder/KdbndpExpressionContext.cs @@ -104,6 +104,10 @@ namespace SqlSugar } public class KdbndpMethod : DefaultDbMethod, IDbMethods { + public override string CharIndexNew(MethodCallExpressionModel model) + { + return string.Format(" (strpos ({0},{1}))", model.Args[0].MemberName, model.Args[1].MemberName); + } public override string CharIndex(MethodCallExpressionModel model) { return string.Format(" (strpos ({1},{0})-1)", model.Args[0].MemberName, model.Args[1].MemberName); diff --git a/Src/Asp.Net/SqlSugar/Realization/PostgreSQL/SqlBuilder/PostgreSQLExpressionContext.cs b/Src/Asp.Net/SqlSugar/Realization/PostgreSQL/SqlBuilder/PostgreSQLExpressionContext.cs index 3c837be98..11156e260 100644 --- a/Src/Asp.Net/SqlSugar/Realization/PostgreSQL/SqlBuilder/PostgreSQLExpressionContext.cs +++ b/Src/Asp.Net/SqlSugar/Realization/PostgreSQL/SqlBuilder/PostgreSQLExpressionContext.cs @@ -137,6 +137,10 @@ namespace SqlSugar { return string.Format(" (strpos ({1},{0})-1)", model.Args[0].MemberName, model.Args[1].MemberName); } + public override string CharIndexNew(MethodCallExpressionModel model) + { + return string.Format(" (strpos ({0},{1}))", model.Args[0].MemberName, model.Args[1].MemberName); + } public override string TrueValue() { return "true"; diff --git a/Src/Asp.Net/SqlSugar/Realization/SqlServer/SqlBuilder/SqlServerExpressionContext.cs b/Src/Asp.Net/SqlSugar/Realization/SqlServer/SqlBuilder/SqlServerExpressionContext.cs index 03c97b3cc..d6fb7f9ae 100644 --- a/Src/Asp.Net/SqlSugar/Realization/SqlServer/SqlBuilder/SqlServerExpressionContext.cs +++ b/Src/Asp.Net/SqlSugar/Realization/SqlServer/SqlBuilder/SqlServerExpressionContext.cs @@ -20,6 +20,10 @@ namespace SqlSugar } public partial class SqlServerMethod : DefaultDbMethod, IDbMethods { + public override string CharIndexNew(MethodCallExpressionModel model) + { + return string.Format("CHARINDEX ({1},{0})", model.Args[0].MemberName, model.Args[1].MemberName); + } public override string WeekOfYear(MethodCallExpressionModel mode) { var parameterNameA = mode.Args[0].MemberName;