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;