You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
353 lines
11 KiB
353 lines
11 KiB
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
|
|
namespace SqlSugar
|
|
{
|
|
public partial class DefaultDbMethod : IDbMethods
|
|
{
|
|
public virtual string IIF(MethodCallExpressionModel model)
|
|
{
|
|
var parameter = model.Args[0];
|
|
var parameter2 = model.Args[1];
|
|
var parameter3 = model.Args[2];
|
|
return $"( CASE WHEN {parameter.MemberName} THEN {parameter2.MemberName} ELSE {parameter3.MemberName} END )";
|
|
}
|
|
|
|
public virtual string IsNullOrEmpty(MethodCallExpressionModel model)
|
|
{
|
|
var parameter = model.Args[0];
|
|
return $"( {parameter.MemberName}='' OR {parameter.MemberName} IS NULL )";
|
|
}
|
|
|
|
public virtual string HasValue(MethodCallExpressionModel model)
|
|
{
|
|
var parameter = model.Args[0];
|
|
return $"( {parameter.MemberName}<>'' AND {parameter.MemberName} IS NOT NULL )";
|
|
}
|
|
|
|
public virtual string HasNumber(MethodCallExpressionModel model)
|
|
{
|
|
var parameter = model.Args[0];
|
|
return $"( {parameter.MemberName}>0 AND {parameter.MemberName} IS NOT NULL )";
|
|
}
|
|
|
|
public virtual string ToUpper(MethodCallExpressionModel model)
|
|
{
|
|
var parameter = model.Args[0];
|
|
return $" (UPPER({parameter.MemberName})) ";
|
|
}
|
|
|
|
public virtual string ToLower(MethodCallExpressionModel model)
|
|
{
|
|
var parameter = model.Args[0];
|
|
return $" (LOWER({parameter.MemberName})) ";
|
|
}
|
|
|
|
public virtual string Trim(MethodCallExpressionModel model)
|
|
{
|
|
var parameter = model.Args[0];
|
|
return $" (rtrim(ltrim({parameter.MemberName}))) ";
|
|
}
|
|
|
|
public virtual string Contains(MethodCallExpressionModel model)
|
|
{
|
|
var parameter = model.Args[0];
|
|
var parameter2 = model.Args[1];
|
|
return $" ({parameter.MemberName} like '%'+{parameter2.MemberName}+'%') ";
|
|
}
|
|
|
|
public virtual string ContainsArray(MethodCallExpressionModel model)
|
|
{
|
|
var inValueIEnumerable = (IEnumerable)model.Args[0].MemberValue;
|
|
var inValues = new List<object>();
|
|
if (inValueIEnumerable != null)
|
|
{
|
|
foreach (var item in inValueIEnumerable)
|
|
{
|
|
if (item != null && item.GetType().IsEnum())
|
|
{
|
|
inValues.Add(Convert.ToInt64(item));
|
|
}
|
|
else
|
|
{
|
|
inValues.Add(item);
|
|
}
|
|
}
|
|
}
|
|
var value = model.Args[1].MemberName;
|
|
string inValueString = null;
|
|
if (inValues != null && inValues.Count > 0)
|
|
{
|
|
inValueString = inValues.ToArray().ToJoinSqlInVals();
|
|
}
|
|
if (inValueString.IsNullOrEmpty())
|
|
{
|
|
return " (1=2) ";
|
|
}
|
|
else
|
|
{
|
|
return $" ({value} IN ({inValueString})) ";
|
|
}
|
|
}
|
|
|
|
public virtual string Equals(MethodCallExpressionModel model)
|
|
{
|
|
var parameter = model.Args[0];
|
|
var parameter2 = model.Args[1];
|
|
return $" ({parameter.MemberName} = {parameter2.MemberName}) "; ;
|
|
}
|
|
|
|
public virtual string DateIsSameDay(MethodCallExpressionModel model)
|
|
{
|
|
var parameter = model.Args[0];
|
|
var parameter2 = model.Args[1];
|
|
return $" (DATEDIFF(day,{parameter.MemberName},{parameter2.MemberName})=0) "; ;
|
|
}
|
|
|
|
public virtual string DateIsSameByType(MethodCallExpressionModel model)
|
|
{
|
|
var parameter = model.Args[0];
|
|
var parameter2 = model.Args[1];
|
|
var parameter3 = model.Args[2];
|
|
return $" (DATEDIFF({parameter3.MemberValue},{parameter.MemberName},{parameter2.MemberName})=0) ";
|
|
}
|
|
|
|
public virtual string DateAddByType(MethodCallExpressionModel model)
|
|
{
|
|
var parameter = model.Args[0];
|
|
var parameter2 = model.Args[1];
|
|
var parameter3 = model.Args[2];
|
|
return $" (DATEADD({parameter3.MemberValue},{parameter2.MemberName},{parameter.MemberName})) ";
|
|
}
|
|
|
|
public virtual string DateAddDay(MethodCallExpressionModel model)
|
|
{
|
|
var parameter = model.Args[0];
|
|
var parameter2 = model.Args[1];
|
|
return $" (DATEADD(day,{parameter2.MemberName},{parameter.MemberName})) ";
|
|
}
|
|
|
|
public virtual string Between(MethodCallExpressionModel model)
|
|
{
|
|
var parameter = model.Args[0];
|
|
var parameter1 = model.Args[1];
|
|
var parameter2 = model.Args[2];
|
|
return $" ({parameter.MemberName} BETWEEN {parameter1.MemberName} AND {parameter2.MemberName}) ";
|
|
}
|
|
|
|
public virtual string StartsWith(MethodCallExpressionModel model)
|
|
{
|
|
var parameter = model.Args[0];
|
|
var parameter2 = model.Args[1];
|
|
return $" ({parameter.MemberName} like {parameter2.MemberName}+'%') ";
|
|
}
|
|
|
|
public virtual string EndsWith(MethodCallExpressionModel model)
|
|
{
|
|
var parameter = model.Args[0];
|
|
var parameter2 = model.Args[1];
|
|
return $" ({parameter.MemberName} like '%'+{parameter2.MemberName}) ";
|
|
}
|
|
|
|
public virtual string DateValue(MethodCallExpressionModel model)
|
|
{
|
|
var parameter = model.Args[0];
|
|
var parameter2 = model.Args[1];
|
|
return $" DateName({parameter2.MemberValue},{parameter.MemberName}) ";
|
|
}
|
|
|
|
public virtual string ToInt32(MethodCallExpressionModel model)
|
|
{
|
|
var parameter = model.Args[0];
|
|
return $" CAST({parameter.MemberName} AS INT)";
|
|
}
|
|
|
|
public virtual string ToInt64(MethodCallExpressionModel model)
|
|
{
|
|
var parameter = model.Args[0];
|
|
return $" CAST({parameter.MemberName} AS BIGINT)";
|
|
}
|
|
|
|
public virtual string ToString(MethodCallExpressionModel model)
|
|
{
|
|
var parameter = model.Args[0];
|
|
return $" CAST({parameter.MemberName} AS NVARCHAR(MAX))";
|
|
}
|
|
|
|
public virtual string ToGuid(MethodCallExpressionModel model)
|
|
{
|
|
var parameter = model.Args[0];
|
|
return $" CAST({parameter.MemberName} AS UNIQUEIDENTIFIER)";
|
|
}
|
|
|
|
public virtual string ToDouble(MethodCallExpressionModel model)
|
|
{
|
|
var parameter = model.Args[0];
|
|
return $" CAST({parameter.MemberName} AS FLOAT)";
|
|
}
|
|
|
|
public virtual string ToBool(MethodCallExpressionModel model)
|
|
{
|
|
var parameter = model.Args[0];
|
|
return $" CAST({parameter.MemberName} AS BIT)";
|
|
}
|
|
|
|
public virtual string ToDate(MethodCallExpressionModel model)
|
|
{
|
|
var parameter = model.Args[0];
|
|
return $" CAST({parameter.MemberName} AS DATETIME)";
|
|
}
|
|
|
|
public virtual string ToTime(MethodCallExpressionModel model)
|
|
{
|
|
var parameter = model.Args[0];
|
|
return $" CAST({parameter.MemberName} AS TIME)";
|
|
}
|
|
|
|
public virtual string ToDecimal(MethodCallExpressionModel model)
|
|
{
|
|
var parameter = model.Args[0];
|
|
return $" CAST({parameter.MemberName} AS MONEY)";
|
|
}
|
|
|
|
public virtual string Substring(MethodCallExpressionModel model)
|
|
{
|
|
var parameter = model.Args[0];
|
|
var parameter2 = model.Args[1];
|
|
var parameter3 = model.Args[2];
|
|
return $"SUBSTRING({parameter.MemberName},1 + {parameter2.MemberName},{parameter3.MemberName})";
|
|
}
|
|
|
|
public virtual string Length(MethodCallExpressionModel model)
|
|
{
|
|
var parameter = model.Args[0];
|
|
return $"LEN({parameter.MemberName})";
|
|
}
|
|
|
|
public virtual string Replace(MethodCallExpressionModel model)
|
|
{
|
|
var parameter = model.Args[0];
|
|
var parameter2 = model.Args[1];
|
|
var parameter3 = model.Args[2];
|
|
return $"REPLACE({parameter.MemberName},{parameter2.MemberName},{parameter3.MemberName})";
|
|
}
|
|
|
|
public virtual string AggregateSum(MethodCallExpressionModel model)
|
|
{
|
|
var parameter = model.Args[0];
|
|
return $"SUM({parameter.MemberName})";
|
|
}
|
|
|
|
public virtual string AggregateAvg(MethodCallExpressionModel model)
|
|
{
|
|
var parameter = model.Args[0];
|
|
return $"AVG({parameter.MemberName})";
|
|
}
|
|
|
|
public virtual string AggregateMin(MethodCallExpressionModel model)
|
|
{
|
|
var parameter = model.Args[0];
|
|
return $"MIN({parameter.MemberName})";
|
|
}
|
|
|
|
public virtual string AggregateMax(MethodCallExpressionModel model)
|
|
{
|
|
var parameter = model.Args[0];
|
|
return $"MAX({parameter.MemberName})";
|
|
}
|
|
|
|
public virtual string AggregateCount(MethodCallExpressionModel model)
|
|
{
|
|
var parameter = model.Args[0];
|
|
return $"COUNT({parameter.MemberName})";
|
|
}
|
|
|
|
public virtual string MappingColumn(MethodCallExpressionModel model)
|
|
{
|
|
var parameter = model.Args[0];
|
|
var parameter1 = model.Args[1];
|
|
return $"{parameter1.MemberValue}";
|
|
}
|
|
|
|
public virtual string IsNull(MethodCallExpressionModel model)
|
|
{
|
|
var parameter = model.Args[0];
|
|
var parameter1 = model.Args[1];
|
|
return $"ISNULL({parameter.MemberName},{parameter1.MemberName})";
|
|
}
|
|
|
|
public virtual string True()
|
|
{
|
|
return "( 1 = 1 ) ";
|
|
}
|
|
|
|
public virtual string False()
|
|
{
|
|
return "( 1 = 2 ) ";
|
|
}
|
|
|
|
public string GuidNew()
|
|
{
|
|
return "'" + Guid.NewGuid() + "' ";
|
|
}
|
|
|
|
public string GetSelfAndAutoFill(string shortName, bool isSingle)
|
|
{
|
|
if (isSingle) return "*";
|
|
else
|
|
return $"{shortName}.*";
|
|
}
|
|
|
|
public virtual string MergeString(params string[] strings)
|
|
{
|
|
return string.Join("+", strings);
|
|
}
|
|
|
|
public virtual string Pack(string sql)
|
|
{
|
|
return "(" + sql + ")";
|
|
}
|
|
|
|
public virtual string EqualTrue(string fieldName)
|
|
{
|
|
return "( " + fieldName + "=1 )";
|
|
}
|
|
|
|
public virtual string Null()
|
|
{
|
|
return "NULL";
|
|
}
|
|
|
|
public virtual string GetDate()
|
|
{
|
|
return "GETDATE()";
|
|
}
|
|
|
|
public virtual string CaseWhen(List<KeyValuePair<string, string>> sqls)
|
|
{
|
|
var reslut = new StringBuilder();
|
|
foreach (var item in sqls)
|
|
{
|
|
if (item.Key == "IF")
|
|
{
|
|
reslut.AppendFormat(" ( CASE WHEN {0} ", item.Value);
|
|
}
|
|
else if (item.Key == "End")
|
|
{
|
|
reslut.AppendFormat("ELSE {0} END )", item.Value);
|
|
}
|
|
else if (item.Key == "Return")
|
|
{
|
|
reslut.AppendFormat(" THEN {0} ", item.Value);
|
|
}
|
|
else
|
|
{
|
|
reslut.AppendFormat(" WHEN {0} ", item.Value);
|
|
}
|
|
}
|
|
return reslut.ToString();
|
|
}
|
|
}
|
|
}
|