Update exp to sql

This commit is contained in:
sunkaixuan
2022-11-09 14:11:15 +08:00
parent 0e2fcd0967
commit dffc8e0fd3
2 changed files with 31 additions and 13 deletions

View File

@@ -514,6 +514,10 @@ namespace SqlSugar
var str ="'"+ model.Args[0].MemberValue.ObjToString()+"'"; var str ="'"+ model.Args[0].MemberValue.ObjToString()+"'";
var revalue = MergeString("'", "$1", "'"); var revalue = MergeString("'", "$1", "'");
if (revalue.Contains("concat("))
{
return FormatConcat(model);
}
str =Regex.Replace(str, @"(\{\d+?\})", revalue); str =Regex.Replace(str, @"(\{\d+?\})", revalue);
var array = model.Args.Skip(1).Select(it => it.IsMember?it.MemberName:it.MemberValue) var array = model.Args.Skip(1).Select(it => it.IsMember?it.MemberName:it.MemberValue)
.Select(it=>ToString(new MethodCallExpressionModel() { Args=new List<MethodCallExpressionArgs>() { .Select(it=>ToString(new MethodCallExpressionModel() { Args=new List<MethodCallExpressionArgs>() {
@@ -521,6 +525,20 @@ namespace SqlSugar
} })).ToArray(); } })).ToArray();
return string.Format(""+str+ "", array); return string.Format(""+str+ "", array);
} }
private string FormatConcat(MethodCallExpressionModel model)
{
var str = "concat('" + model.Args[0].MemberValue.ObjToString() + "')";
str = Regex.Replace(str, @"(\{\d+?\})", "',$1,'");
var array = model.Args.Skip(1).Select(it => it.IsMember ? it.MemberName : it.MemberValue)
.Select(it => ToString(new MethodCallExpressionModel()
{
Args = new List<MethodCallExpressionArgs>() {
new MethodCallExpressionArgs(){ IsMember=true, MemberName=it }
}
})).ToArray();
return string.Format("" + str + "", array);
}
public virtual string Abs(MethodCallExpressionModel model) public virtual string Abs(MethodCallExpressionModel model)
{ {

View File

@@ -69,20 +69,20 @@ namespace SqlSugar
var parameter2 = model.Args[1]; var parameter2 = model.Args[1];
return string.Format(" (TIMESTAMPDIFF(day,date({0}),date({1}))=0) ", parameter.MemberName, parameter2.MemberName); ; return string.Format(" (TIMESTAMPDIFF(day,date({0}),date({1}))=0) ", parameter.MemberName, parameter2.MemberName); ;
} }
public virtual string Format(MethodCallExpressionModel model) //public virtual string Format(MethodCallExpressionModel model)
{ //{
var str = "concat('" + model.Args[0].MemberValue.ObjToString() + "')"; // var str = "concat('" + model.Args[0].MemberValue.ObjToString() + "')";
str = Regex.Replace(str, @"(\{\d+?\})", "',$1,'"); // str = Regex.Replace(str, @"(\{\d+?\})", "',$1,'");
var array = model.Args.Skip(1).Select(it => it.IsMember ? it.MemberName : it.MemberValue) // var array = model.Args.Skip(1).Select(it => it.IsMember ? it.MemberName : it.MemberValue)
.Select(it => ToString(new MethodCallExpressionModel() // .Select(it => ToString(new MethodCallExpressionModel()
{ // {
Args = new List<MethodCallExpressionArgs>() { // Args = new List<MethodCallExpressionArgs>() {
new MethodCallExpressionArgs(){ IsMember=true, MemberName=it } // new MethodCallExpressionArgs(){ IsMember=true, MemberName=it }
} // }
})).ToArray(); // })).ToArray();
return string.Format("" + str + "", array); // return string.Format("" + str + "", array);
} //}
public override string DateIsSameByType(MethodCallExpressionModel model) public override string DateIsSameByType(MethodCallExpressionModel model)
{ {
var parameter = model.Args[0]; var parameter = model.Args[0];