예제 #1
0
        public void Concat()
        {
            IAlias    person = sql.Alias("person");
            IFunction func   = SqlFn.Concat(person["Name"], person["SurName"]);

            QueryResult result = engine.Compile(func);

            Assert.Equal("\"PERSON\".\"NAME\" || \"PERSON\".\"SURNAME\"", result.Sql);
            Assert.Equal(new Dictionary <string, object>(), result.Parameters);
        }
예제 #2
0
        public void Concat()
        {
            IAlias    person = sql.Alias("person");
            IFunction func   = SqlFn.Concat(person["Name"], person["SurName"]);

            QueryResult result = engine.Compile(func);

            Assert.Equal("CONCAT(\"person\".\"name\", \"person\".\"surname\")", result.Sql);
            Assert.Equal(new Dictionary <string, object>(), result.Parameters);
        }
예제 #3
0
        public void Cast()
        {
            IAlias    person = sql.Alias("person");
            IFunction func   = SqlFn.Cast(person["Salary"], sql.Type("VARCHAR"));

            QueryResult result = engine.Compile(func);

            Assert.Equal("CAST(\"PERSON\".\"SALARY\" AS VARCHAR)", result.Sql);
            Assert.Equal(new Dictionary <string, object>(), result.Parameters);
        }
예제 #4
0
        public void Upper()
        {
            IAlias    person = sql.Alias("person");
            IFunction func   = SqlFn.Upper(person["Name"]);

            QueryResult result = engine.Compile(func);

            Assert.Equal("UPPER(\"person\".\"name\")", result.Sql);
            Assert.Equal(new Dictionary <string, object>(), result.Parameters);
        }
예제 #5
0
        public void Ceiling()
        {
            IAlias    person = sql.Alias("person");
            IFunction func   = SqlFn.Ceiling(person["Salary"]);

            QueryResult result = engine.Compile(func);

            Assert.Equal("CEILING(\"person\".\"salary\")", result.Sql);
            Assert.Equal(new Dictionary <string, object>(), result.Parameters);
        }
예제 #6
0
        public void Count_Column()
        {
            IAlias    person = sql.Alias("person");
            IFunction func   = SqlFn.Count(person["Name"]);

            QueryResult result = engine.Compile(func);

            Assert.Equal("COUNT(\"person\".\"Name\")", result.Sql);
            Assert.Equal(new Dictionary <string, object>(), result.Parameters);
        }
예제 #7
0
        public void SumDistinct()
        {
            IAlias    person = sql.Alias("person");
            IFunction func   = SqlFn.SumDistinct(person["Salary"]);

            QueryResult result = engine.Compile(func);

            Assert.Equal("SUM(DISTINCT \"person\".\"salary\")", result.Sql);
            Assert.Equal(new Dictionary <string, object>(), result.Parameters);
        }
예제 #8
0
        public void Trim()
        {
            IAlias    person = sql.Alias("person");
            IFunction func   = SqlFn.Trim(person["Name"]);

            QueryResult result = engine.Compile(func);

            Assert.Equal("TRIM(`person`.`Name`)", result.Sql);
            Assert.Equal(new Dictionary <string, object>(), result.Parameters);
        }
예제 #9
0
        public void Coalesce()
        {
            IAlias    person = sql.Alias("person");
            IFunction func   = SqlFn.Coalesce(person["Name"], person["SurName"]);

            QueryResult result = engine.Compile(func);

            Assert.Equal("COALESCE(`person`.`Name`, `person`.`SurName`)", result.Sql);
            Assert.Equal(new Dictionary <string, object>(), result.Parameters);
        }
예제 #10
0
        public void AvgDistinct()
        {
            IAlias    person = sql.Alias("person");
            IFunction func   = SqlFn.AvgDistinct(person["Salary"]);

            QueryResult result = engine.Compile(func);

            Assert.Equal("AVG(DISTINCT `person`.`Salary`)", result.Sql);
            Assert.Equal(new Dictionary <string, object>(), result.Parameters);
        }
예제 #11
0
        public void Round()
        {
            IAlias    person = sql.Alias("person");
            IFunction func   = SqlFn.Round(person["Salary"]);

            QueryResult result = engine.Compile(func);

            Assert.Equal("ROUND(`person`.`Salary`)", result.Sql);
            Assert.Equal(new Dictionary <string, object>(), result.Parameters);
        }
예제 #12
0
        public void Sum()
        {
            IAlias    person = sql.Alias("person");
            IFunction func   = SqlFn.Sum(person["Salary"]);

            QueryResult result = engine.Compile(func);

            Assert.Equal("SUM([person].[Salary])", result.Sql);
            Assert.Equal(new Dictionary <string, object>(), result.Parameters);
        }
예제 #13
0
        public void Count_Distinct()
        {
            IAlias    person = sql.Alias("person");
            IFunction func   = SqlFn.CountDistinct(person["Name"]);

            QueryResult result = engine.Compile(func);

            Assert.Equal("COUNT(DISTINCT \"PERSON\".\"NAME\")", result.Sql);
            Assert.Equal(new Dictionary <string, object>(), result.Parameters);
        }
예제 #14
0
        public void LTrim()
        {
            IAlias    person = sql.Alias("person");
            IFunction func   = SqlFn.LTrim(person["Name"]);

            QueryResult result = engine.Compile(func);

            Assert.Equal("LTRIM(\"PERSON\".\"NAME\")", result.Sql);
            Assert.Equal(new Dictionary <string, object>(), result.Parameters);
        }
예제 #15
0
        public void Lower()
        {
            IAlias    person = sql.Alias("person");
            IFunction func   = SqlFn.Lower(person["Name"]);

            QueryResult result = engine.Compile(func);

            Assert.Equal("LOWER([person].[Name])", result.Sql);
            Assert.Equal(new Dictionary <string, object>(), result.Parameters);
        }
예제 #16
0
        public void Max()
        {
            IAlias    person = sql.Alias("person");
            IFunction func   = SqlFn.Max(person["Salary"]);

            QueryResult result = engine.Compile(func);

            Assert.Equal("MAX(\"PERSON\".\"SALARY\")", result.Sql);
            Assert.Equal(new Dictionary <string, object>(), result.Parameters);
        }
예제 #17
0
        public void Over_Value()
        {
            IAlias  person = sql.Alias("person");
            ISelect select = sql.Select().Add(SqlFn.Sum(person["Salary"]))
                             .Over(o => o.PartitionBy(x => x.Add(person["DepartmentId"])));

            QueryResult result = engine.Compile(select);

            Assert.Equal("SELECT SUM(\"person\".\"Salary\") OVER(PARTITION BY \"person\".\"DepartmentId\")", result.Sql);
            Assert.Equal(new Dictionary <string, object>(), result.Parameters);
        }
예제 #18
0
        public void Concat_With_Or()
        {
            engine.AddFunction(FunctionName.Concat, FunctionHelper.ConcatOr);

            IAlias    person = sql.Alias("person");
            IFunction func   = SqlFn.Concat(person["Name"], person["SurName"]);

            QueryResult result = engine.Compile(func);

            Assert.Equal("\"person\".\"Name\" || \"person\".\"SurName\"", result.Sql);
            Assert.Equal(new Dictionary <string, object>(), result.Parameters);
        }
예제 #19
0
        public void Trim_Both()
        {
            engine.AddFunction(FunctionName.Trim, FunctionHelper.TrimBoth);

            IAlias    person = sql.Alias("person");
            IFunction func   = SqlFn.Trim(person["Name"]);

            QueryResult result = engine.Compile(func);

            Assert.Equal("TRIM(\"person\".\"Name\")", result.Sql);
            Assert.Equal(new Dictionary <string, object>(), result.Parameters);
        }
예제 #20
0
        public void Trim_Character()
        {
            IAlias    person = sql.Alias("person");
            IFunction func   = SqlFn.Trim(person["Name"], ",");

            QueryResult result = engine.Compile(func);

            Assert.Equal("TRIM(@p0 FROM \"person\".\"name\")", result.Sql);
            Assert.Equal(new Dictionary <string, object>
            {
                ["@p0"] = ","
            }, result.Parameters);
        }
예제 #21
0
        public void Round_Places()
        {
            IAlias    person = sql.Alias("person");
            IFunction func   = SqlFn.Round(person["Salary"], 2m);

            QueryResult result = engine.Compile(func);

            Assert.Equal("ROUND(\"person\".\"salary\", @p0)", result.Sql);
            Assert.Equal(new Dictionary <string, object>
            {
                ["@p0"] = 2m
            }, result.Parameters);
        }
예제 #22
0
        public void NullIf()
        {
            IAlias    person = sql.Alias("person");
            IFunction func   = SqlFn.NullIf(person["Name"], "empty");

            QueryResult result = engine.Compile(func);

            Assert.Equal("NULLIF(\"person\".\"name\", @p0)", result.Sql);
            Assert.Equal(new Dictionary <string, object>
            {
                ["@p0"] = "empty"
            }, result.Parameters);
        }
예제 #23
0
        public void Substring()
        {
            IAlias    person = sql.Alias("person");
            IFunction func   = SqlFn.Substring(person["Name"], 2, 4);

            QueryResult result = engine.Compile(func);

            Assert.Equal("SUBSTRING(`person`.`Name`, @p0, @p1)", result.Sql);
            Assert.Equal(new Dictionary <string, object>()
            {
                ["@p0"] = 2, ["@p1"] = 4
            }, result.Parameters);
        }
예제 #24
0
        public void RTrim_Character()
        {
            IAlias    person = sql.Alias("person");
            IFunction func   = SqlFn.RTrim(person["Name"], ",");

            QueryResult result = engine.Compile(func);

            Assert.Equal("TRIM(TRAILING @p0 FROM `person`.`Name`)", result.Sql);
            Assert.Equal(new Dictionary <string, object>()
            {
                ["@p0"] = ","
            }, result.Parameters);
        }
예제 #25
0
        public void Replace()
        {
            IAlias    person = sql.Alias("person");
            IFunction func   = SqlFn.Replace(person["Name"], "a", "b");

            QueryResult result = engine.Compile(func);

            Assert.Equal("REPLACE(`person`.`Name`, @p0, @p1)", result.Sql);
            Assert.Equal(new Dictionary <string, object>()
            {
                ["@p0"] = "a", ["@p1"] = "b"
            }, result.Parameters);
        }
예제 #26
0
        public void RTrim_Character()
        {
            IAlias    person = sql.Alias("person");
            IFunction func   = SqlFn.RTrim(person["Name"], ",");

            QueryResult result = engine.Compile(func);

            Assert.Equal("RTRIM(\"PERSON\".\"NAME\", :p0)", result.Sql);
            Assert.Equal(new Dictionary <string, object>
            {
                [":p0"] = ","
            }, result.Parameters);
        }
예제 #27
0
        public void LTrim_Character()
        {
            IAlias    person = sql.Alias("person");
            IFunction func   = SqlFn.LTrim(person["Name"], ",");

            QueryResult result = engine.Compile(func);

            Assert.Equal("LTRIM([person].[Name], @p0)", result.Sql);
            Assert.Equal(new Dictionary <string, object>()
            {
                ["@p0"] = ","
            }, result.Parameters);
        }
예제 #28
0
        public void Substring()
        {
            IAlias    person = sql.Alias("person");
            IFunction func   = SqlFn.Substring(person["Name"], 2, 4);

            QueryResult result = engine.Compile(func);

            Assert.Equal("SUBSTR(\"PERSON\".\"NAME\", :p0, :p1)", result.Sql);
            Assert.Equal(new Dictionary <string, object>
            {
                [":p0"] = 2,
                [":p1"] = 4
            }, result.Parameters);
        }
예제 #29
0
        public void RTrim_Character_Trim_Trailing()
        {
            engine.AddFunction(FunctionName.RTrim, FunctionHelper.TrimTrailing);

            IAlias    person = sql.Alias("person");
            IFunction func   = SqlFn.RTrim(person["Name"], ",");

            QueryResult result = engine.Compile(func);

            Assert.Equal("TRIM(TRAILING @p0 FROM \"person\".\"Name\")", result.Sql);
            Assert.Equal(new Dictionary <string, object>
            {
                ["@p0"] = ","
            }, result.Parameters);
        }
예제 #30
0
        public void To_String()
        {
            IAlias person = sql.Alias("person");
            IAlias dept   = sql.Alias("dept");

            IQuery query = sql.Query
                           .Select(dept["Id"], dept["Name"], SqlFn.Count())
                           .From(person)
                           .Join(dept)
                           .On(dept["Id"].Eq(person["DepartmentId"]))
                           .Where(person["Active"].Eq(true))
                           .GroupBy(dept["Id"], dept["Name"])
                           .Having(SqlFn.Count().Gt(10))
                           .OrderBy(x => x.Add(dept["Name"]))
                           .Offset(10, 20);

            Assert.Equal("SELECT dept.Id, dept.Name, COUNT(*) FROM person INNER JOIN dept "
                         + "ON dept.Id = person.DepartmentId WHERE person.Active = true "
                         + "GROUP BY dept.Id, dept.Name HAVING COUNT(*) > 10 ORDER BY dept.Name "
                         + "OFFSET 10 FETCH 20", query.ToString());
        }