From fb4cff1a246c1b9803ad4b1c7361f7c3fe95a377 Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Fri, 7 Jun 2024 21:35:12 +0800 Subject: [PATCH] Support Like --- .../SqlBuilderProvider/SqlBuilderProvider_Condition.cs | 9 +++++---- Src/Asp.NetCore2/SqlSugar/Entities/ConnMoreSettings.cs | 1 + Src/Asp.NetCore2/SqlSugar/Utilities/UtilMethods.cs | 3 ++- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/Src/Asp.NetCore2/SqlSugar/Abstract/SqlBuilderProvider/SqlBuilderProvider_Condition.cs b/Src/Asp.NetCore2/SqlSugar/Abstract/SqlBuilderProvider/SqlBuilderProvider_Condition.cs index cf936e10b..ee843259b 100644 --- a/Src/Asp.NetCore2/SqlSugar/Abstract/SqlBuilderProvider/SqlBuilderProvider_Condition.cs +++ b/Src/Asp.NetCore2/SqlSugar/Abstract/SqlBuilderProvider/SqlBuilderProvider_Condition.cs @@ -70,13 +70,14 @@ namespace SqlSugar string oldName = item.FieldName; item.FieldName = GetTranslationColumnName(item.FieldName); item.FieldName = item.FieldName.ToCheckField(); + var isILike = this.Context.CurrentConnectionConfig?.MoreSettings?.EnableILike == true; switch (item.ConditionalType) { case ConditionalType.Equal: Equal(builder, parameters, item, type, temp, parameterName); break; case ConditionalType.Like: - builder.AppendFormat(temp, type, item.FieldName.ToSqlFilter(), "LIKE", parameterName); + builder.AppendFormat(temp, type, item.FieldName.ToSqlFilter(), isILike ? "ILIKE" : "LIKE", parameterName); parameters.Add(new SugarParameter(parameterName, "%" + item.FieldValue + "%")); break; case ConditionalType.GreaterThan: @@ -103,15 +104,15 @@ namespace SqlSugar NotIn(builder, parameters, item, type, temp, parameterName); break; case ConditionalType.LikeLeft: - builder.AppendFormat(temp, type, item.FieldName.ToSqlFilter(), "LIKE", parameterName); + builder.AppendFormat(temp, type, item.FieldName.ToSqlFilter(), isILike? "ILIKE" : "LIKE", parameterName); parameters.Add(new SugarParameter(parameterName, item.FieldValue + "%")); break; case ConditionalType.NoLike: - builder.AppendFormat(temp, type, item.FieldName.ToSqlFilter(), " NOT LIKE", parameterName); + builder.AppendFormat(temp, type, item.FieldName.ToSqlFilter(), isILike ? "NOT ILIKE" : " NOT LIKE", parameterName); parameters.Add(new SugarParameter(parameterName, "%" + item.FieldValue + "%")); break; case ConditionalType.LikeRight: - builder.AppendFormat(temp, type, item.FieldName.ToSqlFilter(), "LIKE", parameterName); + builder.AppendFormat(temp, type, item.FieldName.ToSqlFilter(), isILike ? "ILIKE" : "LIKE", parameterName); parameters.Add(new SugarParameter(parameterName, "%" + item.FieldValue)); break; case ConditionalType.NoEqual: diff --git a/Src/Asp.NetCore2/SqlSugar/Entities/ConnMoreSettings.cs b/Src/Asp.NetCore2/SqlSugar/Entities/ConnMoreSettings.cs index a9fdbf568..bc1effcf2 100644 --- a/Src/Asp.NetCore2/SqlSugar/Entities/ConnMoreSettings.cs +++ b/Src/Asp.NetCore2/SqlSugar/Entities/ConnMoreSettings.cs @@ -16,6 +16,7 @@ namespace SqlSugar public bool DisableMillisecond { get; set; } public bool PgSqlIsAutoToLower { get; set; } = true; public bool PgSqlIsAutoToLowerCodeFirst { get; set; } = true; + public bool EnableILike { get; set; } public bool IsAutoToUpper { get; set; } = true; public int DefaultCacheDurationInSeconds { get; set; } public bool? TableEnumIsString { get; set; } diff --git a/Src/Asp.NetCore2/SqlSugar/Utilities/UtilMethods.cs b/Src/Asp.NetCore2/SqlSugar/Utilities/UtilMethods.cs index 32befb403..124f84d93 100644 --- a/Src/Asp.NetCore2/SqlSugar/Utilities/UtilMethods.cs +++ b/Src/Asp.NetCore2/SqlSugar/Utilities/UtilMethods.cs @@ -661,7 +661,8 @@ namespace SqlSugar SqliteCodeFirstEnableDropColumn=it.MoreSettings.SqliteCodeFirstEnableDropColumn, MaxParameterNameLength=it.MoreSettings.MaxParameterNameLength, DisableQueryWhereColumnRemoveTrim=it.MoreSettings.DisableQueryWhereColumnRemoveTrim, - DatabaseModel=it.MoreSettings.DatabaseModel + DatabaseModel=it.MoreSettings.DatabaseModel, + EnableILike=it.MoreSettings.EnableILike }, SqlMiddle = it.SqlMiddle == null ? null : new SqlMiddle