private string buildSelectQuery(string tableName, List <Tuple <string, string, Clauses> > clausesList) { StringBuilder queryBuilder = new StringBuilder(); Action <Tuple <string, string, Clauses> > appendClause = delegate(Tuple <string, string, Clauses> clause) { queryBuilder.Append(clause.Item2); string symbol = Convert.ToString((char)clause.Item3); if (symbol == "|") { symbol = "<="; } if (symbol == ";") { symbol = ">="; } queryBuilder.AppendFormat(" {0} ", symbol); queryBuilder.AppendFormat(":{0} ", clause.Item1); }; Action apendSelectColumns = delegate() { queryBuilder.Append("select "); if (SelectColumnNames == null) { queryBuilder.Append('*'); return; } SelectColumnNames.ForEach(column => queryBuilder.AppendFormat(" {0},", column)); queryBuilder.Remove(queryBuilder.Length - 1, 1); }; apendSelectColumns(); queryBuilder.AppendFormat(" from {0} ", tableName); if (clausesList.Count > 0) { queryBuilder.Append("where "); } for (int index = 0; index < clausesList.Count - 1; index++) { appendClause(clausesList[index]); queryBuilder.Append(" and "); } if (clausesList.Count > 0) { appendClause(clausesList[clausesList.Count - 1]); } queryBuilder.Append(" allow filtering"); return(queryBuilder.ToString()); }
private void BeginSelectSql() { QueryText.AppendLine($@"SELECT {string.Join(", ", SelectColumnNames.Select(col => $"st.{QB}{col}{QE}"))}"); QueryText.AppendLine($@"FROM {TN.QuotatedFullName} st"); QueryText.AppendLine("INNER JOIN ("); if (ConnectionType == ConnectionManagerType.MySql && IsMariaDb) QueryText.AppendLine($@"WITH ws ( {string.Join(", ", SourceColumnNames.Select(col => $"{QB}{col}{QE}"))} ) AS ( VALUES"); else if (ConnectionType == ConnectionManagerType.Oracle) QueryText.Append(""); else QueryText.AppendLine("VALUES"); }