示例#1
0
 /// <summary>
 /// 解析查询列中的字符串截取函数
 /// </summary>
 /// <param name="callExp"></param>
 /// <param name="sqlBuilder"></param>
 /// <param name="fullExpression"></param>
 /// <param name="alias"></param>
 private void ResolveSelectForSubstring(MethodCallExpression callExp, StringBuilder sqlBuilder, LambdaExpression fullExpression, string alias)
 {
     if (callExp.Object is MemberExpression objExp && objExp.Expression.NodeType == ExpressionType.Parameter)
     {
         var funcName = _sqlAdapter.FuncSubstring;
         var colName  = _queryBody.GetColumnName(objExp, fullExpression);
         var start    = CommonExtensions.ToInt(((ConstantExpression)callExp.Arguments[0]).Value) + 1;
         if (callExp.Arguments.Count > 1)
         {
             var length = CommonExtensions.ToInt(((ConstantExpression)callExp.Arguments[1]).Value);
             sqlBuilder.AppendFormat("{0}({1},{2},{3}) AS {4},", funcName, colName, start, length, alias);
         }
         else
         {
             if (_sqlAdapter.SqlDialect == SqlDialect.SqlServer)
             {
                 sqlBuilder.AppendFormat("{0}({1},{2},{3}) AS {4},", funcName, colName, start, $"LEN({colName})-{start - 1}", alias);
             }
             else
             {
                 sqlBuilder.AppendFormat("{0}({1},{2}) AS {3},", funcName, colName, start, alias);
             }
         }
     }
 }
示例#2
0
 /// <summary>
 /// 附加值
 /// </summary>
 /// <param name="sqlBuilder"></param>
 /// <param name="type"></param>
 /// <param name="value"></param>
 private void AppendValue(StringBuilder sqlBuilder, Type type, object value)
 {
     if (type.IsEnum || type == typeof(bool))
     {
         sqlBuilder.AppendFormat("{0}", CommonExtensions.ToInt(value));
     }
     else if (type == typeof(string) || type == typeof(char) || type == typeof(Guid))
     {
         sqlBuilder.AppendFormat("'{0}'", value);
     }
     else if (type == typeof(DateTime))
     {
         sqlBuilder.AppendFormat("'{0:yyyy-MM-dd HH:mm:ss}'", CommonExtensions.ToDateTime(value));
     }
     else
     {
         sqlBuilder.AppendFormat("{0}", value);
     }
 }