Add SqlFunc.Left Right LeftPad

This commit is contained in:
sunkaixuan 2023-07-16 16:44:33 +08:00
parent 27d8d3cee5
commit 499529188b
7 changed files with 90 additions and 0 deletions

View File

@ -1031,5 +1031,25 @@ namespace SqlSugar
var parameterNameB = mode.Args[1].MemberName;
return $" CASE WHEN LEFT({parameterNameA}, 1) = {parameterNameB} THEN RIGHT({parameterNameA}, LEN({parameterNameA}) - 1) ELSE {parameterNameA} END ";
}
public virtual string Left(MethodCallExpressionModel mode)
{
var parameterNameA = mode.Args[0].MemberName;
var parameterNameB = mode.Args[1].MemberName;
return $" LEFT({parameterNameA},{parameterNameB}) ";
}
public virtual string Right(MethodCallExpressionModel mode)
{
var parameterNameA = mode.Args[0].MemberName;
var parameterNameB = mode.Args[1].MemberName;
return $" RIGHT({parameterNameA},{parameterNameB}) ";
}
public virtual string PadLeft(MethodCallExpressionModel mode)
{
var parameterNameA = mode.Args[0].MemberName;
var parameterNameB = mode.Args[1].MemberName;
var parameterNameC = mode.Args[2].MemberName;
return $" LPAD({parameterNameA},{parameterNameB},{parameterNameC}) ";
}
}
}

View File

@ -116,5 +116,8 @@ namespace SqlSugar
string WeekOfYear(MethodCallExpressionModel mode);
string TrimEnd(MethodCallExpressionModel mode);
string TrimStart(MethodCallExpressionModel mode);
string Left(MethodCallExpressionModel mode);
string Right(MethodCallExpressionModel mode);
string PadLeft(MethodCallExpressionModel mode);
}
}

View File

@ -13,6 +13,18 @@ namespace SqlSugar
{
throw new NotSupportedException("Can only be used in expressions");
}
public static string Left(string value,int number)
{
throw new NotSupportedException("Can only be used in expressions");
}
public static string Right(string value,int number)
{
throw new NotSupportedException("Can only be used in expressions");
}
public static string PadLeft(string value,int number, char padChar)
{
throw new NotSupportedException("Can only be used in expressions");
}
public static bool Like(string fieldName, string likeValue)
{
throw new NotSupportedException("Can only be used in expressions");

View File

@ -240,5 +240,18 @@ namespace SqlSugar
var parameterNameB = mode.Args[1].MemberName;
return $" LTRIM({parameterNameA}, {parameterNameB}) ";
}
public override string Left(MethodCallExpressionModel mode)
{
var parameterNameA = mode.Args[0].MemberName;
var parameterNameB = mode.Args[1].MemberName;
return $" SUBSTR({parameterNameA}, 1, {parameterNameB}) ";
}
public override string Right(MethodCallExpressionModel mode)
{
var parameterNameA = mode.Args[0].MemberName;
var parameterNameB = mode.Args[1].MemberName;
return $" SUBSTR({parameterNameA}, -2, {parameterNameB}) ";
}
}
}

View File

@ -366,5 +366,17 @@ namespace SqlSugar
var parameterNameB = mode.Args[1].MemberName;
return $" LTRIM({parameterNameA}, {parameterNameB}) ";
}
public override string Left(MethodCallExpressionModel mode)
{
var parameterNameA = mode.Args[0].MemberName;
var parameterNameB = mode.Args[1].MemberName;
return $" SUBSTR({parameterNameA}, 1, {parameterNameB}) ";
}
public override string Right(MethodCallExpressionModel mode)
{
var parameterNameA = mode.Args[0].MemberName;
var parameterNameB = mode.Args[1].MemberName;
return $" SUBSTR({parameterNameA}, -2, {parameterNameB}) ";
}
}
}

View File

@ -122,6 +122,14 @@ namespace SqlSugar
var parameterNameB = mode.Args[1].MemberName;
return $" CASE WHEN LEFT({parameterNameA}, 1) = {parameterNameB} THEN RIGHT({parameterNameA}, LEN({parameterNameA}) - 1) ELSE {parameterNameA} END ";
}
public override string PadLeft(MethodCallExpressionModel mode)
{
var parameterNameA = mode.Args[0].MemberName;
var parameterNameB = mode.Args[1].MemberName;
var parameterNameC = mode.Args[2].MemberName;
return $" CONCAT(REPLICATE({parameterNameC}, {parameterNameB} - LEN({parameterNameA})), {parameterNameA}) ";
}
}

View File

@ -297,5 +297,27 @@ namespace SqlSugar
var parameterNameB = mode.Args[1].MemberName;
return $" CASE WHEN SUBSTR({parameterNameA}, 1, 1) ={parameterNameB} THEN SUBSTR({parameterNameA}, 2) ELSE {parameterNameA} END ";
}
public override string PadLeft(MethodCallExpressionModel mode)
{
var parameterNameA = mode.Args[0].MemberName;
var parameterNameB = mode.Args[1].MemberName;
var parameterNameC = mode.Args[2].MemberName;
var value = new string[mode.Args[1].MemberValue.ObjToInt()].Select(it=> parameterNameC);
return $"substr({string.Join("||", value)} || {parameterNameA}, {parameterNameB}*-1) ";
}
public override string Left(MethodCallExpressionModel mode)
{
var parameterNameA = mode.Args[0].MemberName;
var parameterNameB = mode.Args[1].MemberName;
return $" SUBSTR({parameterNameA}, 1, {parameterNameB}) ";
}
public override string Right(MethodCallExpressionModel mode)
{
var parameterNameA = mode.Args[0].MemberName;
var parameterNameB = mode.Args[1].MemberName;
return $" SUBSTR({parameterNameA}, -2, {parameterNameB}) ";
}
}
}