示例#1
0
        public void FormatAliasTable()
        {
            var alias = "tbl";

            SuperSql.DefaultFormatter = FormatterLibrary.MsSql;
            var result1 = SuperSql.FormatTableAlias(alias);

            Assert.Equal('[' + alias + ']', result1);

            // SuperSql.DefaultFormatter = FormatterLibrary.MySql;
            // var result2 = SuperSql.FormatTableAlias(alias);
            // Assert.Equal('`' + alias + '`', result2);
        }
示例#2
0
        public string GetSql(string sourceTable)
        {
            StringBuilder sb = new StringBuilder();

            sb.Append(this.GetJoinType());
            sb.Append(' ');
            sb.Append(SuperSql.FormatTable(this.Table, this.Parameters));
            if (!string.IsNullOrEmpty(this.TableAlias))
            {
                sb.Append(" as ");
                sb.Append(SuperSql.FormatTableAlias(this.TableAlias, this.Parameters));
            }
            sb.Append(" ON ");

            StringBuilder ex = new StringBuilder();

            foreach (IJoinItem item in this._expressions)
            {
                if (ex.Length > 0)
                {
                    ex.Append(" AND ");
                }
                if (item.IsRaw)
                {
                    ex.Append(item.Value);
                }
                else
                {
                    ex.Append(SuperSql.FormatTableAlias(sourceTable, this.Parameters));
                    ex.Append('.');
                    ex.Append(SuperSql.FormatColumn(item.Column, this.Parameters));
                    ex.Append('=');
                    if (string.IsNullOrEmpty(this.TableAlias))
                    {
                        ex.Append(SuperSql.FormatTable(this.Table, this.Parameters));
                    }
                    else
                    {
                        ex.Append(SuperSql.FormatTableAlias(this.TableAlias, this.Parameters));
                    }
                    ex.Append('.');
                    ex.Append(SuperSql.FormatColumn(item.Value, this.Parameters));
                }
            }
            sb.Append(ex);
            return(sb.ToString());
        }
示例#3
0
        public string GetSql(string tableAlias = "")
        {
            if (this.Count == 0)
            {
                return(string.IsNullOrEmpty(tableAlias)
                                        ? "*"
                                        : SuperSql.FormatTableAlias(tableAlias, this.Parameters) + ".*");
            }

            string        table;
            StringBuilder sb = new StringBuilder();

            foreach (IColumn column in this.Expressions)
            {
                table = string.IsNullOrEmpty(column.TableAlias) ? tableAlias : column.TableAlias;
                if (sb.Length > 0)
                {
                    sb.Append(", ");
                }
                if (!string.IsNullOrEmpty(table) && !column.IsRaw && !column.IsAggregation)
                {
                    sb.Append(SuperSql.FormatTableAlias(table, this.Parameters) + '.');
                }
                if (column.IsRaw)
                {
                    sb.Append(column.Value);
                }
                else
                {
                    sb.Append(column.Prefix);
                    sb.Append(SuperSql.FormatColumn(column.Value, this.Parameters));
                    sb.Append(column.Postfix);
                }
                if (!string.IsNullOrEmpty(column.Alias))
                {
                    sb.Append(" as ");
                    sb.Append(this.Parameters.AliasEscape);
                    sb.Append(column.Alias);
                    sb.Append(this.Parameters.AliasEscape);
                }
            }
            return(sb.ToString());
        }