mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-04-22 02:32:50 +08:00
- 优化 string Contains 模糊查找 % 的情况;
This commit is contained in:
parent
81406ba37a
commit
e10fb8ffe5
@ -1,4 +1,4 @@
|
|||||||
using FreeSql.DataAnnotations;
|
using FreeSql.DataAnnotations;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@ -57,7 +57,7 @@ namespace FreeSql.Tests.MySqlConnectorExpression
|
|||||||
{
|
{
|
||||||
var fsql = g.mysql;
|
var fsql = g.mysql;
|
||||||
fsql.Delete<StringJoin01>().Where("1=1").ExecuteAffrows();
|
fsql.Delete<StringJoin01>().Where("1=1").ExecuteAffrows();
|
||||||
fsql.Insert(new[] { new StringJoin01 { name = "北京" }, new StringJoin01 { name = "上海" }, new StringJoin01 { name = "深圳" }, }).ExecuteAffrows();
|
fsql.Insert(new[] { new StringJoin01 { name = "北京" }, new StringJoin01 { name = "上海" }, new StringJoin01 { name = "深圳" }, }).ExecuteAffrows();
|
||||||
|
|
||||||
var val1 = string.Join(",", fsql.Select<StringJoin01>().ToList(a => a.name));
|
var val1 = string.Join(",", fsql.Select<StringJoin01>().ToList(a => a.name));
|
||||||
var val2 = fsql.Select<StringJoin01>().ToList(a => string.Join(",", fsql.Select<StringJoin01>().As("b").ToList(b => b.name)));
|
var val2 = fsql.Select<StringJoin01>().ToList(a => string.Join(",", fsql.Select<StringJoin01>().As("b").ToList(b => b.name)));
|
||||||
@ -98,7 +98,7 @@ namespace FreeSql.Tests.MySqlConnectorExpression
|
|||||||
[Fact]
|
[Fact]
|
||||||
public void Format()
|
public void Format()
|
||||||
{
|
{
|
||||||
var item = g.mysql.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
var item = g.mysql.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
||||||
var sql = select.WhereDynamic(item).ToSql(a => new
|
var sql = select.WhereDynamic(item).ToSql(a => new
|
||||||
{
|
{
|
||||||
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}",
|
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}",
|
||||||
@ -121,9 +121,9 @@ WHERE (a.`Id` = {item.Id})", sql);
|
|||||||
[Fact]
|
[Fact]
|
||||||
public void Format4()
|
public void Format4()
|
||||||
{
|
{
|
||||||
//3个 {} 时,Arguments 解析出来是分开的
|
//3个 {} 时,Arguments 解析出来是分开的
|
||||||
//4个 {} 时,Arguments[1] 只能解析这个出来,然后里面是 NewArray []
|
//4个 {} 时,Arguments[1] 只能解析这个出来,然后里面是 NewArray []
|
||||||
var item = g.mysql.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
var item = g.mysql.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
||||||
var sql = select.WhereDynamic(item).ToSql(a => new
|
var sql = select.WhereDynamic(item).ToSql(a => new
|
||||||
{
|
{
|
||||||
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}{a.Title}",
|
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}{a.Title}",
|
||||||
@ -281,6 +281,17 @@ WHERE (a.`Id` = {item.Id})", sql);
|
|||||||
//SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a__Type.`Guid` as4, a__Type.`ParentId` as5, a__Type.`Name` as6, a.`Title` as7, a.`CreateTime` as8
|
//SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a__Type.`Guid` as4, a__Type.`ParentId` as5, a__Type.`Name` as6, a.`Title` as7, a.`CreateTime` as8
|
||||||
//FROM `tb_topic` a, `TestTypeInfo` a__Type
|
//FROM `tb_topic` a, `TestTypeInfo` a__Type
|
||||||
//WHERE((concat(a.`Title`, 'aaa')) LIKE concat('%', a__Type.`Name`, '%'))
|
//WHERE((concat(a.`Title`, 'aaa')) LIKE concat('%', a__Type.`Name`, '%'))
|
||||||
|
|
||||||
|
|
||||||
|
list.Add(select.Where(a => a.Title.Contains("%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.Title.Contains(a.Title + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.Title.Contains(a.Title + 1 + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.Title.Contains(a.Type.Name + "%")).ToList());
|
||||||
|
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains("aaa" + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Title + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Title + 1 + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Type.Name + "%")).ToList());
|
||||||
}
|
}
|
||||||
[Fact]
|
[Fact]
|
||||||
public void ToLower()
|
public void ToLower()
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
using FreeSql.DataAnnotations;
|
using FreeSql.DataAnnotations;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@ -55,7 +55,7 @@ namespace FreeSql.Tests.Odbc.DamengExpression
|
|||||||
{
|
{
|
||||||
var fsql = g.dameng;
|
var fsql = g.dameng;
|
||||||
fsql.Delete<StringJoin01>().Where("1=1").ExecuteAffrows();
|
fsql.Delete<StringJoin01>().Where("1=1").ExecuteAffrows();
|
||||||
fsql.Insert(new[] { new StringJoin01 { name = "北京" }, new StringJoin01 { name = "上海" }, new StringJoin01 { name = "深圳" }, }).ExecuteAffrows();
|
fsql.Insert(new[] { new StringJoin01 { name = "北京" }, new StringJoin01 { name = "上海" }, new StringJoin01 { name = "深圳" }, }).ExecuteAffrows();
|
||||||
|
|
||||||
var val1 = string.Join(",", fsql.Select<StringJoin01>().ToList(a => a.name));
|
var val1 = string.Join(",", fsql.Select<StringJoin01>().ToList(a => a.name));
|
||||||
var val2 = fsql.Select<StringJoin01>().ToList(a => string.Join(",", fsql.Select<StringJoin01>().As("b").ToList(b => b.name)));
|
var val2 = fsql.Select<StringJoin01>().ToList(a => string.Join(",", fsql.Select<StringJoin01>().As("b").ToList(b => b.name)));
|
||||||
@ -96,7 +96,7 @@ namespace FreeSql.Tests.Odbc.DamengExpression
|
|||||||
[Fact]
|
[Fact]
|
||||||
public void Format()
|
public void Format()
|
||||||
{
|
{
|
||||||
var item = g.dameng.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
var item = g.dameng.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
||||||
var sql = select.WhereDynamic(item).ToSql(a => new
|
var sql = select.WhereDynamic(item).ToSql(a => new
|
||||||
{
|
{
|
||||||
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}",
|
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}",
|
||||||
@ -119,9 +119,9 @@ WHERE (a.""ID"" = {item.Id})", sql);
|
|||||||
[Fact]
|
[Fact]
|
||||||
public void Format4()
|
public void Format4()
|
||||||
{
|
{
|
||||||
//3个 {} 时,Arguments 解析出来是分开的
|
//3个 {} 时,Arguments 解析出来是分开的
|
||||||
//4个 {} 时,Arguments[1] 只能解析这个出来,然后里面是 NewArray []
|
//4个 {} 时,Arguments[1] 只能解析这个出来,然后里面是 NewArray []
|
||||||
var item = g.dameng.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
var item = g.dameng.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
||||||
var sql = select.WhereDynamic(item).ToSql(a => new
|
var sql = select.WhereDynamic(item).ToSql(a => new
|
||||||
{
|
{
|
||||||
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}{a.Title}",
|
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}{a.Title}",
|
||||||
@ -279,6 +279,17 @@ WHERE (a.""ID"" = {item.Id})", sql);
|
|||||||
//SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a__Type.`Guid` as4, a__Type.`ParentId` as5, a__Type.`Name` as6, a.`Title` as7, a.`CreateTime` as8
|
//SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a__Type.`Guid` as4, a__Type.`ParentId` as5, a__Type.`Name` as6, a.`Title` as7, a.`CreateTime` as8
|
||||||
//FROM `tb_topic` a, `TestTypeInfo` a__Type
|
//FROM `tb_topic` a, `TestTypeInfo` a__Type
|
||||||
//WHERE((concat(a.`Title`, 'aaa')) LIKE concat('%', a__Type.`Name`, '%'))
|
//WHERE((concat(a.`Title`, 'aaa')) LIKE concat('%', a__Type.`Name`, '%'))
|
||||||
|
|
||||||
|
|
||||||
|
list.Add(select.Where(a => a.Title.Contains("%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.Title.Contains(a.Title + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.Title.Contains(a.Title + 1 + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.Title.Contains(a.Type.Name + "%")).ToList());
|
||||||
|
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains("aaa" + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Title + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Title + 1 + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Type.Name + "%")).ToList());
|
||||||
}
|
}
|
||||||
[Fact]
|
[Fact]
|
||||||
public void ToLower()
|
public void ToLower()
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
using FreeSql.DataAnnotations;
|
using FreeSql.DataAnnotations;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
using FreeSql.DataAnnotations;
|
using FreeSql.DataAnnotations;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@ -55,7 +55,7 @@ namespace FreeSql.Tests.Odbc.KingbaseESExpression
|
|||||||
{
|
{
|
||||||
var fsql = g.kingbaseES;
|
var fsql = g.kingbaseES;
|
||||||
fsql.Delete<StringJoin01>().Where("1=1").ExecuteAffrows();
|
fsql.Delete<StringJoin01>().Where("1=1").ExecuteAffrows();
|
||||||
fsql.Insert(new[] { new StringJoin01 { name = "北京" }, new StringJoin01 { name = "上海" }, new StringJoin01 { name = "深圳" }, }).ExecuteAffrows();
|
fsql.Insert(new[] { new StringJoin01 { name = "北京" }, new StringJoin01 { name = "上海" }, new StringJoin01 { name = "深圳" }, }).ExecuteAffrows();
|
||||||
|
|
||||||
var val1 = string.Join(",", fsql.Select<StringJoin01>().ToList(a => a.name));
|
var val1 = string.Join(",", fsql.Select<StringJoin01>().ToList(a => a.name));
|
||||||
var val2 = fsql.Select<StringJoin01>().ToList(a => string.Join(",", fsql.Select<StringJoin01>().As("b").ToList(b => b.name)));
|
var val2 = fsql.Select<StringJoin01>().ToList(a => string.Join(",", fsql.Select<StringJoin01>().As("b").ToList(b => b.name)));
|
||||||
@ -96,7 +96,7 @@ namespace FreeSql.Tests.Odbc.KingbaseESExpression
|
|||||||
[Fact]
|
[Fact]
|
||||||
public void Format()
|
public void Format()
|
||||||
{
|
{
|
||||||
var item = g.kingbaseES.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
var item = g.kingbaseES.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
||||||
var sql = select.WhereDynamic(item).ToSql(a => new
|
var sql = select.WhereDynamic(item).ToSql(a => new
|
||||||
{
|
{
|
||||||
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}",
|
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}",
|
||||||
@ -119,9 +119,9 @@ WHERE (a.""ID"" = {item.Id})", sql);
|
|||||||
[Fact]
|
[Fact]
|
||||||
public void Format4()
|
public void Format4()
|
||||||
{
|
{
|
||||||
//3个 {} 时,Arguments 解析出来是分开的
|
//3个 {} 时,Arguments 解析出来是分开的
|
||||||
//4个 {} 时,Arguments[1] 只能解析这个出来,然后里面是 NewArray []
|
//4个 {} 时,Arguments[1] 只能解析这个出来,然后里面是 NewArray []
|
||||||
var item = g.kingbaseES.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
var item = g.kingbaseES.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
||||||
var sql = select.WhereDynamic(item).ToSql(a => new
|
var sql = select.WhereDynamic(item).ToSql(a => new
|
||||||
{
|
{
|
||||||
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}{a.Title}",
|
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}{a.Title}",
|
||||||
@ -279,6 +279,17 @@ WHERE (a.""ID"" = {item.Id})", sql);
|
|||||||
//SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a__Type.`Guid` as4, a__Type.`ParentId` as5, a__Type.`Name` as6, a.`Title` as7, a.`CreateTime` as8
|
//SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a__Type.`Guid` as4, a__Type.`ParentId` as5, a__Type.`Name` as6, a.`Title` as7, a.`CreateTime` as8
|
||||||
//FROM `tb_topic` a, `TestTypeInfo` a__Type
|
//FROM `tb_topic` a, `TestTypeInfo` a__Type
|
||||||
//WHERE((concat(a.`Title`, 'aaa')) LIKE concat('%', a__Type.`Name`, '%'))
|
//WHERE((concat(a.`Title`, 'aaa')) LIKE concat('%', a__Type.`Name`, '%'))
|
||||||
|
|
||||||
|
|
||||||
|
list.Add(select.Where(a => a.Title.Contains("%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.Title.Contains(a.Title + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.Title.Contains(a.Title + 1 + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.Title.Contains(a.Type.Name + "%")).ToList());
|
||||||
|
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains("aaa" + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Title + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Title + 1 + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Type.Name + "%")).ToList());
|
||||||
}
|
}
|
||||||
[Fact]
|
[Fact]
|
||||||
public void ToLower()
|
public void ToLower()
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
using FreeSql.DataAnnotations;
|
using FreeSql.DataAnnotations;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@ -57,7 +57,7 @@ namespace FreeSql.Tests.Odbc.MySqlExpression
|
|||||||
{
|
{
|
||||||
var fsql = g.mysql;
|
var fsql = g.mysql;
|
||||||
fsql.Delete<StringJoin01>().Where("1=1").ExecuteAffrows();
|
fsql.Delete<StringJoin01>().Where("1=1").ExecuteAffrows();
|
||||||
fsql.Insert(new[] { new StringJoin01 { name = "北京" }, new StringJoin01 { name = "上海" }, new StringJoin01 { name = "深圳" }, }).ExecuteAffrows();
|
fsql.Insert(new[] { new StringJoin01 { name = "北京" }, new StringJoin01 { name = "上海" }, new StringJoin01 { name = "深圳" }, }).ExecuteAffrows();
|
||||||
|
|
||||||
var val1 = string.Join(",", fsql.Select<StringJoin01>().ToList(a => a.name));
|
var val1 = string.Join(",", fsql.Select<StringJoin01>().ToList(a => a.name));
|
||||||
var val2 = fsql.Select<StringJoin01>().ToList(a => string.Join(",", fsql.Select<StringJoin01>().As("b").ToList(b => b.name)));
|
var val2 = fsql.Select<StringJoin01>().ToList(a => string.Join(",", fsql.Select<StringJoin01>().As("b").ToList(b => b.name)));
|
||||||
@ -98,7 +98,7 @@ namespace FreeSql.Tests.Odbc.MySqlExpression
|
|||||||
[Fact]
|
[Fact]
|
||||||
public void Format()
|
public void Format()
|
||||||
{
|
{
|
||||||
var item = g.mysql.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
var item = g.mysql.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
||||||
var sql = select.WhereDynamic(item).ToSql(a => new
|
var sql = select.WhereDynamic(item).ToSql(a => new
|
||||||
{
|
{
|
||||||
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}",
|
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}",
|
||||||
@ -121,9 +121,9 @@ WHERE (a.`Id` = {item.Id})", sql);
|
|||||||
[Fact]
|
[Fact]
|
||||||
public void Format4()
|
public void Format4()
|
||||||
{
|
{
|
||||||
//3个 {} 时,Arguments 解析出来是分开的
|
//3个 {} 时,Arguments 解析出来是分开的
|
||||||
//4个 {} 时,Arguments[1] 只能解析这个出来,然后里面是 NewArray []
|
//4个 {} 时,Arguments[1] 只能解析这个出来,然后里面是 NewArray []
|
||||||
var item = g.mysql.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
var item = g.mysql.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
||||||
var sql = select.WhereDynamic(item).ToSql(a => new
|
var sql = select.WhereDynamic(item).ToSql(a => new
|
||||||
{
|
{
|
||||||
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}{a.Title}",
|
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}{a.Title}",
|
||||||
@ -281,6 +281,17 @@ WHERE (a.`Id` = {item.Id})", sql);
|
|||||||
//SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a__Type.`Guid` as4, a__Type.`ParentId` as5, a__Type.`Name` as6, a.`Title` as7, a.`CreateTime` as8
|
//SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a__Type.`Guid` as4, a__Type.`ParentId` as5, a__Type.`Name` as6, a.`Title` as7, a.`CreateTime` as8
|
||||||
//FROM `tb_topic` a, `TestTypeInfo` a__Type
|
//FROM `tb_topic` a, `TestTypeInfo` a__Type
|
||||||
//WHERE((concat(a.`Title`, 'aaa')) LIKE concat('%', a__Type.`Name`, '%'))
|
//WHERE((concat(a.`Title`, 'aaa')) LIKE concat('%', a__Type.`Name`, '%'))
|
||||||
|
|
||||||
|
|
||||||
|
list.Add(select.Where(a => a.Title.Contains("%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.Title.Contains(a.Title + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.Title.Contains(a.Title + 1 + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.Title.Contains(a.Type.Name + "%")).ToList());
|
||||||
|
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains("aaa" + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Title + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Title + 1 + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Type.Name + "%")).ToList());
|
||||||
}
|
}
|
||||||
[Fact]
|
[Fact]
|
||||||
public void ToLower()
|
public void ToLower()
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
using FreeSql.DataAnnotations;
|
using FreeSql.DataAnnotations;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@ -55,7 +55,7 @@ namespace FreeSql.Tests.Odbc.OracleExpression
|
|||||||
{
|
{
|
||||||
var fsql = g.oracle;
|
var fsql = g.oracle;
|
||||||
fsql.Delete<StringJoin01>().Where("1=1").ExecuteAffrows();
|
fsql.Delete<StringJoin01>().Where("1=1").ExecuteAffrows();
|
||||||
fsql.Insert(new[] { new StringJoin01 { name = "北京" }, new StringJoin01 { name = "上海" }, new StringJoin01 { name = "深圳" }, }).ExecuteAffrows();
|
fsql.Insert(new[] { new StringJoin01 { name = "北京" }, new StringJoin01 { name = "上海" }, new StringJoin01 { name = "深圳" }, }).ExecuteAffrows();
|
||||||
|
|
||||||
var val1 = string.Join(",", fsql.Select<StringJoin01>().ToList(a => a.name));
|
var val1 = string.Join(",", fsql.Select<StringJoin01>().ToList(a => a.name));
|
||||||
var val2 = fsql.Select<StringJoin01>().ToList(a => string.Join(",", fsql.Select<StringJoin01>().As("b").ToList(b => b.name)));
|
var val2 = fsql.Select<StringJoin01>().ToList(a => string.Join(",", fsql.Select<StringJoin01>().As("b").ToList(b => b.name)));
|
||||||
@ -96,7 +96,7 @@ namespace FreeSql.Tests.Odbc.OracleExpression
|
|||||||
[Fact]
|
[Fact]
|
||||||
public void Format()
|
public void Format()
|
||||||
{
|
{
|
||||||
var item = g.oracle.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
var item = g.oracle.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
||||||
var sql = select.WhereDynamic(item).ToSql(a => new
|
var sql = select.WhereDynamic(item).ToSql(a => new
|
||||||
{
|
{
|
||||||
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}",
|
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}",
|
||||||
@ -119,9 +119,9 @@ WHERE (a.""ID"" = {item.Id})", sql);
|
|||||||
[Fact]
|
[Fact]
|
||||||
public void Format4()
|
public void Format4()
|
||||||
{
|
{
|
||||||
//3个 {} 时,Arguments 解析出来是分开的
|
//3个 {} 时,Arguments 解析出来是分开的
|
||||||
//4个 {} 时,Arguments[1] 只能解析这个出来,然后里面是 NewArray []
|
//4个 {} 时,Arguments[1] 只能解析这个出来,然后里面是 NewArray []
|
||||||
var item = g.oracle.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
var item = g.oracle.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
||||||
var sql = select.WhereDynamic(item).ToSql(a => new
|
var sql = select.WhereDynamic(item).ToSql(a => new
|
||||||
{
|
{
|
||||||
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}{a.Title}",
|
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}{a.Title}",
|
||||||
@ -279,6 +279,17 @@ WHERE (a.""ID"" = {item.Id})", sql);
|
|||||||
//SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a__Type.`Guid` as4, a__Type.`ParentId` as5, a__Type.`Name` as6, a.`Title` as7, a.`CreateTime` as8
|
//SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a__Type.`Guid` as4, a__Type.`ParentId` as5, a__Type.`Name` as6, a.`Title` as7, a.`CreateTime` as8
|
||||||
//FROM `tb_topic` a, `TestTypeInfo` a__Type
|
//FROM `tb_topic` a, `TestTypeInfo` a__Type
|
||||||
//WHERE((concat(a.`Title`, 'aaa')) LIKE concat('%', a__Type.`Name`, '%'))
|
//WHERE((concat(a.`Title`, 'aaa')) LIKE concat('%', a__Type.`Name`, '%'))
|
||||||
|
|
||||||
|
|
||||||
|
list.Add(select.Where(a => a.Title.Contains("%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.Title.Contains(a.Title + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.Title.Contains(a.Title + 1 + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.Title.Contains(a.Type.Name + "%")).ToList());
|
||||||
|
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains("aaa" + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Title + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Title + 1 + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Type.Name + "%")).ToList());
|
||||||
}
|
}
|
||||||
[Fact]
|
[Fact]
|
||||||
public void ToLower()
|
public void ToLower()
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
using FreeSql.DataAnnotations;
|
using FreeSql.DataAnnotations;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@ -55,7 +55,7 @@ namespace FreeSql.Tests.Odbc.PostgreSQLExpression
|
|||||||
{
|
{
|
||||||
var fsql = g.pgsql;
|
var fsql = g.pgsql;
|
||||||
fsql.Delete<StringJoin01>().Where("1=1").ExecuteAffrows();
|
fsql.Delete<StringJoin01>().Where("1=1").ExecuteAffrows();
|
||||||
fsql.Insert(new[] { new StringJoin01 { name = "北京" }, new StringJoin01 { name = "上海" }, new StringJoin01 { name = "深圳" }, }).ExecuteAffrows();
|
fsql.Insert(new[] { new StringJoin01 { name = "北京" }, new StringJoin01 { name = "上海" }, new StringJoin01 { name = "深圳" }, }).ExecuteAffrows();
|
||||||
|
|
||||||
var val1 = string.Join(",", fsql.Select<StringJoin01>().ToList(a => a.name));
|
var val1 = string.Join(",", fsql.Select<StringJoin01>().ToList(a => a.name));
|
||||||
var val2 = fsql.Select<StringJoin01>().ToList(a => string.Join(",", fsql.Select<StringJoin01>().As("b").ToList(b => b.name)));
|
var val2 = fsql.Select<StringJoin01>().ToList(a => string.Join(",", fsql.Select<StringJoin01>().As("b").ToList(b => b.name)));
|
||||||
@ -96,7 +96,7 @@ namespace FreeSql.Tests.Odbc.PostgreSQLExpression
|
|||||||
[Fact]
|
[Fact]
|
||||||
public void Format()
|
public void Format()
|
||||||
{
|
{
|
||||||
var item = g.pgsql.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
var item = g.pgsql.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
||||||
var sql = select.WhereDynamic(item).ToSql(a => new
|
var sql = select.WhereDynamic(item).ToSql(a => new
|
||||||
{
|
{
|
||||||
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}",
|
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}",
|
||||||
@ -119,9 +119,9 @@ WHERE (a.""id"" = {item.Id})", sql);
|
|||||||
[Fact]
|
[Fact]
|
||||||
public void Format4()
|
public void Format4()
|
||||||
{
|
{
|
||||||
//3个 {} 时,Arguments 解析出来是分开的
|
//3个 {} 时,Arguments 解析出来是分开的
|
||||||
//4个 {} 时,Arguments[1] 只能解析这个出来,然后里面是 NewArray []
|
//4个 {} 时,Arguments[1] 只能解析这个出来,然后里面是 NewArray []
|
||||||
var item = g.pgsql.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
var item = g.pgsql.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
||||||
var sql = select.WhereDynamic(item).ToSql(a => new
|
var sql = select.WhereDynamic(item).ToSql(a => new
|
||||||
{
|
{
|
||||||
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}{a.Title}",
|
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}{a.Title}",
|
||||||
@ -279,6 +279,17 @@ WHERE (a.""id"" = {item.Id})", sql);
|
|||||||
//SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a__Type.`Guid` as4, a__Type.`ParentId` as5, a__Type.`Name` as6, a.`Title` as7, a.`CreateTime` as8
|
//SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a__Type.`Guid` as4, a__Type.`ParentId` as5, a__Type.`Name` as6, a.`Title` as7, a.`CreateTime` as8
|
||||||
//FROM `tb_topic` a, `TestTypeInfo` a__Type
|
//FROM `tb_topic` a, `TestTypeInfo` a__Type
|
||||||
//WHERE((concat(a.`Title`, 'aaa')) LIKE concat('%', a__Type.`Name`, '%'))
|
//WHERE((concat(a.`Title`, 'aaa')) LIKE concat('%', a__Type.`Name`, '%'))
|
||||||
|
|
||||||
|
|
||||||
|
list.Add(select.Where(a => a.Title.Contains("%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.Title.Contains(a.Title + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.Title.Contains(a.Title + 1 + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.Title.Contains(a.Type.Name + "%")).ToList());
|
||||||
|
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains("aaa" + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Title + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Title + 1 + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Type.Name + "%")).ToList());
|
||||||
}
|
}
|
||||||
[Fact]
|
[Fact]
|
||||||
public void ToLower()
|
public void ToLower()
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
using FreeSql.DataAnnotations;
|
using FreeSql.DataAnnotations;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@ -56,7 +56,7 @@ namespace FreeSql.Tests.Odbc.SqlServerExpression
|
|||||||
{
|
{
|
||||||
var fsql = g.sqlserver;
|
var fsql = g.sqlserver;
|
||||||
fsql.Delete<StringJoin01>().Where("1=1").ExecuteAffrows();
|
fsql.Delete<StringJoin01>().Where("1=1").ExecuteAffrows();
|
||||||
fsql.Insert(new[] { new StringJoin01 { name = "北京" }, new StringJoin01 { name = "上海" }, new StringJoin01 { name = "深圳" }, }).ExecuteAffrows();
|
fsql.Insert(new[] { new StringJoin01 { name = "北京" }, new StringJoin01 { name = "上海" }, new StringJoin01 { name = "深圳" }, }).ExecuteAffrows();
|
||||||
|
|
||||||
var val1 = string.Join(",", fsql.Select<StringJoin01>().ToList(a => a.name));
|
var val1 = string.Join(",", fsql.Select<StringJoin01>().ToList(a => a.name));
|
||||||
var val2 = fsql.Select<StringJoin01>().ToList(a => string.Join(",", fsql.Select<StringJoin01>().As("b").ToList(b => b.name)));
|
var val2 = fsql.Select<StringJoin01>().ToList(a => string.Join(",", fsql.Select<StringJoin01>().As("b").ToList(b => b.name)));
|
||||||
@ -97,7 +97,7 @@ namespace FreeSql.Tests.Odbc.SqlServerExpression
|
|||||||
[Fact]
|
[Fact]
|
||||||
public void Format()
|
public void Format()
|
||||||
{
|
{
|
||||||
var item = g.sqlserver.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
var item = g.sqlserver.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
||||||
var sql = select.WhereDynamic(item).ToSql(a => new
|
var sql = select.WhereDynamic(item).ToSql(a => new
|
||||||
{
|
{
|
||||||
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}",
|
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}",
|
||||||
@ -120,9 +120,9 @@ WHERE (a.[Id] = {item.Id})", sql);
|
|||||||
[Fact]
|
[Fact]
|
||||||
public void Format4()
|
public void Format4()
|
||||||
{
|
{
|
||||||
//3个 {} 时,Arguments 解析出来是分开的
|
//3个 {} 时,Arguments 解析出来是分开的
|
||||||
//4个 {} 时,Arguments[1] 只能解析这个出来,然后里面是 NewArray []
|
//4个 {} 时,Arguments[1] 只能解析这个出来,然后里面是 NewArray []
|
||||||
var item = g.sqlserver.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
var item = g.sqlserver.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
||||||
var sql = select.WhereDynamic(item).ToSql(a => new
|
var sql = select.WhereDynamic(item).ToSql(a => new
|
||||||
{
|
{
|
||||||
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}{a.Title}",
|
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}{a.Title}",
|
||||||
@ -190,6 +190,17 @@ WHERE (a.[Id] = {item.Id})", sql);
|
|||||||
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Title)).ToList());
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Title)).ToList());
|
||||||
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Title + 1)).ToList());
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Title + 1)).ToList());
|
||||||
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Type.Name)).ToList());
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Type.Name)).ToList());
|
||||||
|
|
||||||
|
|
||||||
|
list.Add(select.Where(a => a.Title.Contains("%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.Title.Contains(a.Title + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.Title.Contains(a.Title + 1 + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.Title.Contains(a.Type.Name + "%")).ToList());
|
||||||
|
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains("aaa" + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Title + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Title + 1 + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Type.Name + "%")).ToList());
|
||||||
}
|
}
|
||||||
[Fact]
|
[Fact]
|
||||||
public void ToLower()
|
public void ToLower()
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
using FreeSql.DataAnnotations;
|
using FreeSql.DataAnnotations;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@ -55,7 +55,7 @@ namespace FreeSql.Tests.SqliteExpression
|
|||||||
{
|
{
|
||||||
var fsql = g.sqlite;
|
var fsql = g.sqlite;
|
||||||
fsql.Delete<StringJoin01>().Where("1=1").ExecuteAffrows();
|
fsql.Delete<StringJoin01>().Where("1=1").ExecuteAffrows();
|
||||||
fsql.Insert(new[] { new StringJoin01 { name = "北京" }, new StringJoin01 { name = "上海" }, new StringJoin01 { name = "深圳" }, }).ExecuteAffrows();
|
fsql.Insert(new[] { new StringJoin01 { name = "北京" }, new StringJoin01 { name = "上海" }, new StringJoin01 { name = "深圳" }, }).ExecuteAffrows();
|
||||||
|
|
||||||
var val1 = string.Join(",", fsql.Select<StringJoin01>().ToList(a => a.name));
|
var val1 = string.Join(",", fsql.Select<StringJoin01>().ToList(a => a.name));
|
||||||
var val2 = fsql.Select<StringJoin01>().ToList(a => string.Join(",", fsql.Select<StringJoin01>().As("b").ToList(b => b.name)));
|
var val2 = fsql.Select<StringJoin01>().ToList(a => string.Join(",", fsql.Select<StringJoin01>().As("b").ToList(b => b.name)));
|
||||||
@ -96,7 +96,7 @@ namespace FreeSql.Tests.SqliteExpression
|
|||||||
[Fact]
|
[Fact]
|
||||||
public void Format()
|
public void Format()
|
||||||
{
|
{
|
||||||
var item = g.sqlite.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
var item = g.sqlite.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
||||||
var sql = select.WhereDynamic(item).ToSql(a => new
|
var sql = select.WhereDynamic(item).ToSql(a => new
|
||||||
{
|
{
|
||||||
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}",
|
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}",
|
||||||
@ -119,9 +119,9 @@ WHERE (a.""Id"" = {item.Id})", sql);
|
|||||||
[Fact]
|
[Fact]
|
||||||
public void Format4()
|
public void Format4()
|
||||||
{
|
{
|
||||||
//3个 {} 时,Arguments 解析出来是分开的
|
//3个 {} 时,Arguments 解析出来是分开的
|
||||||
//4个 {} 时,Arguments[1] 只能解析这个出来,然后里面是 NewArray []
|
//4个 {} 时,Arguments[1] 只能解析这个出来,然后里面是 NewArray []
|
||||||
var item = g.sqlite.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
var item = g.sqlite.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
||||||
var sql = select.WhereDynamic(item).ToSql(a => new
|
var sql = select.WhereDynamic(item).ToSql(a => new
|
||||||
{
|
{
|
||||||
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}{a.Title}",
|
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}{a.Title}",
|
||||||
@ -279,6 +279,17 @@ WHERE (a.""Id"" = {item.Id})", sql);
|
|||||||
//SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a__Type.`Guid` as4, a__Type.`ParentId` as5, a__Type.`Name` as6, a.`Title` as7, a.`CreateTime` as8
|
//SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a__Type.`Guid` as4, a__Type.`ParentId` as5, a__Type.`Name` as6, a.`Title` as7, a.`CreateTime` as8
|
||||||
//FROM `tb_topic` a, `TestTypeInfo` a__Type
|
//FROM `tb_topic` a, `TestTypeInfo` a__Type
|
||||||
//WHERE((concat(a.`Title`, 'aaa')) LIKE concat('%', a__Type.`Name`, '%'))
|
//WHERE((concat(a.`Title`, 'aaa')) LIKE concat('%', a__Type.`Name`, '%'))
|
||||||
|
|
||||||
|
|
||||||
|
list.Add(select.Where(a => a.Title.Contains("%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.Title.Contains(a.Title + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.Title.Contains(a.Title + 1 + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.Title.Contains(a.Type.Name + "%")).ToList());
|
||||||
|
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains("aaa" + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Title + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Title + 1 + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Type.Name + "%")).ToList());
|
||||||
}
|
}
|
||||||
[Fact]
|
[Fact]
|
||||||
public void ToLower()
|
public void ToLower()
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
using FreeSql.DataAnnotations;
|
using FreeSql.DataAnnotations;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@ -55,7 +55,7 @@ namespace FreeSql.Tests.DamengExpression
|
|||||||
{
|
{
|
||||||
var fsql = g.dameng;
|
var fsql = g.dameng;
|
||||||
fsql.Delete<StringJoin01>().Where("1=1").ExecuteAffrows();
|
fsql.Delete<StringJoin01>().Where("1=1").ExecuteAffrows();
|
||||||
fsql.Insert(new[] { new StringJoin01 { name = "北京" }, new StringJoin01 { name = "上海" }, new StringJoin01 { name = "深圳" }, }).ExecuteAffrows();
|
fsql.Insert(new[] { new StringJoin01 { name = "北京" }, new StringJoin01 { name = "上海" }, new StringJoin01 { name = "深圳" }, }).ExecuteAffrows();
|
||||||
|
|
||||||
var val1 = string.Join(",", fsql.Select<StringJoin01>().ToList(a => a.name));
|
var val1 = string.Join(",", fsql.Select<StringJoin01>().ToList(a => a.name));
|
||||||
var val2 = fsql.Select<StringJoin01>().ToList(a => string.Join(",", fsql.Select<StringJoin01>().As("b").ToList(b => b.name)));
|
var val2 = fsql.Select<StringJoin01>().ToList(a => string.Join(",", fsql.Select<StringJoin01>().As("b").ToList(b => b.name)));
|
||||||
@ -96,7 +96,7 @@ namespace FreeSql.Tests.DamengExpression
|
|||||||
[Fact]
|
[Fact]
|
||||||
public void Format()
|
public void Format()
|
||||||
{
|
{
|
||||||
var item = g.dameng.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
var item = g.dameng.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
||||||
var sql = select.WhereDynamic(item).ToSql(a => new
|
var sql = select.WhereDynamic(item).ToSql(a => new
|
||||||
{
|
{
|
||||||
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}",
|
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}",
|
||||||
@ -119,9 +119,9 @@ WHERE (a.""ID"" = {item.Id})", sql);
|
|||||||
[Fact]
|
[Fact]
|
||||||
public void Format4()
|
public void Format4()
|
||||||
{
|
{
|
||||||
//3个 {} 时,Arguments 解析出来是分开的
|
//3个 {} 时,Arguments 解析出来是分开的
|
||||||
//4个 {} 时,Arguments[1] 只能解析这个出来,然后里面是 NewArray []
|
//4个 {} 时,Arguments[1] 只能解析这个出来,然后里面是 NewArray []
|
||||||
var item = g.dameng.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
var item = g.dameng.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
||||||
var sql = select.WhereDynamic(item).ToSql(a => new
|
var sql = select.WhereDynamic(item).ToSql(a => new
|
||||||
{
|
{
|
||||||
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}{a.Title}",
|
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}{a.Title}",
|
||||||
@ -279,6 +279,17 @@ WHERE (a.""ID"" = {item.Id})", sql);
|
|||||||
//SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a__Type.`Guid` as4, a__Type.`ParentId` as5, a__Type.`Name` as6, a.`Title` as7, a.`CreateTime` as8
|
//SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a__Type.`Guid` as4, a__Type.`ParentId` as5, a__Type.`Name` as6, a.`Title` as7, a.`CreateTime` as8
|
||||||
//FROM `tb_topic` a, `TestTypeInfo` a__Type
|
//FROM `tb_topic` a, `TestTypeInfo` a__Type
|
||||||
//WHERE((concat(a.`Title`, 'aaa')) LIKE concat('%', a__Type.`Name`, '%'))
|
//WHERE((concat(a.`Title`, 'aaa')) LIKE concat('%', a__Type.`Name`, '%'))
|
||||||
|
|
||||||
|
|
||||||
|
list.Add(select.Where(a => a.Title.Contains("%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.Title.Contains(a.Title + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.Title.Contains(a.Title + 1 + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.Title.Contains(a.Type.Name + "%")).ToList());
|
||||||
|
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains("aaa" + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Title + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Title + 1 + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Type.Name + "%")).ToList());
|
||||||
}
|
}
|
||||||
[Fact]
|
[Fact]
|
||||||
public void ToLower()
|
public void ToLower()
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
using FreeSql.DataAnnotations;
|
using FreeSql.DataAnnotations;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@ -55,7 +55,7 @@ namespace FreeSql.Tests.FirebirdExpression
|
|||||||
{
|
{
|
||||||
var fsql = g.firebird;
|
var fsql = g.firebird;
|
||||||
fsql.Delete<StringJoin01>().Where("1=1").ExecuteAffrows();
|
fsql.Delete<StringJoin01>().Where("1=1").ExecuteAffrows();
|
||||||
fsql.Insert(new[] { new StringJoin01 { name = "北京" }, new StringJoin01 { name = "上海" }, new StringJoin01 { name = "深圳" }, }).ExecuteAffrows();
|
fsql.Insert(new[] { new StringJoin01 { name = "北京" }, new StringJoin01 { name = "上海" }, new StringJoin01 { name = "深圳" }, }).ExecuteAffrows();
|
||||||
|
|
||||||
var val1 = string.Join(",", fsql.Select<StringJoin01>().ToList(a => a.name));
|
var val1 = string.Join(",", fsql.Select<StringJoin01>().ToList(a => a.name));
|
||||||
var val2 = fsql.Select<StringJoin01>().ToList(a => string.Join(",", fsql.Select<StringJoin01>().As("b").ToList(b => b.name)));
|
var val2 = fsql.Select<StringJoin01>().ToList(a => string.Join(",", fsql.Select<StringJoin01>().As("b").ToList(b => b.name)));
|
||||||
@ -96,7 +96,7 @@ namespace FreeSql.Tests.FirebirdExpression
|
|||||||
[Fact]
|
[Fact]
|
||||||
public void Format()
|
public void Format()
|
||||||
{
|
{
|
||||||
var item = g.firebird.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
var item = g.firebird.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
||||||
var sql = select.WhereDynamic(item).ToSql(a => new
|
var sql = select.WhereDynamic(item).ToSql(a => new
|
||||||
{
|
{
|
||||||
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}",
|
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}",
|
||||||
@ -119,9 +119,9 @@ WHERE (a.""ID"" = {item.Id})", sql);
|
|||||||
[Fact]
|
[Fact]
|
||||||
public void Format4()
|
public void Format4()
|
||||||
{
|
{
|
||||||
//3个 {} 时,Arguments 解析出来是分开的
|
//3个 {} 时,Arguments 解析出来是分开的
|
||||||
//4个 {} 时,Arguments[1] 只能解析这个出来,然后里面是 NewArray []
|
//4个 {} 时,Arguments[1] 只能解析这个出来,然后里面是 NewArray []
|
||||||
var item = g.firebird.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
var item = g.firebird.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
||||||
var sql = select.WhereDynamic(item).ToSql(a => new
|
var sql = select.WhereDynamic(item).ToSql(a => new
|
||||||
{
|
{
|
||||||
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}{a.Title}",
|
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}{a.Title}",
|
||||||
@ -279,6 +279,17 @@ WHERE (a.""ID"" = {item.Id})", sql);
|
|||||||
//SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a__Type.`Guid` as4, a__Type.`ParentId` as5, a__Type.`Name` as6, a.`Title` as7, a.`CreateTime` as8
|
//SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a__Type.`Guid` as4, a__Type.`ParentId` as5, a__Type.`Name` as6, a.`Title` as7, a.`CreateTime` as8
|
||||||
//FROM `tb_topic` a, `TestTypeInfo` a__Type
|
//FROM `tb_topic` a, `TestTypeInfo` a__Type
|
||||||
//WHERE((concat(a.`Title`, 'aaa')) LIKE concat('%', a__Type.`Name`, '%'))
|
//WHERE((concat(a.`Title`, 'aaa')) LIKE concat('%', a__Type.`Name`, '%'))
|
||||||
|
|
||||||
|
|
||||||
|
list.Add(select.Where(a => a.Title.Contains("%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.Title.Contains(a.Title + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.Title.Contains(a.Title + 1 + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.Title.Contains(a.Type.Name + "%")).ToList());
|
||||||
|
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains("aaa" + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Title + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Title + 1 + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Type.Name + "%")).ToList());
|
||||||
}
|
}
|
||||||
[Fact]
|
[Fact]
|
||||||
public void ToLower()
|
public void ToLower()
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
using FreeSql.DataAnnotations;
|
using FreeSql.DataAnnotations;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@ -55,7 +55,7 @@ namespace FreeSql.Tests.KingbaseESExpression
|
|||||||
{
|
{
|
||||||
var fsql = g.kingbaseES;
|
var fsql = g.kingbaseES;
|
||||||
fsql.Delete<StringJoin01>().Where("1=1").ExecuteAffrows();
|
fsql.Delete<StringJoin01>().Where("1=1").ExecuteAffrows();
|
||||||
fsql.Insert(new[] { new StringJoin01 { name = "北京" }, new StringJoin01 { name = "上海" }, new StringJoin01 { name = "深圳" }, }).ExecuteAffrows();
|
fsql.Insert(new[] { new StringJoin01 { name = "北京" }, new StringJoin01 { name = "上海" }, new StringJoin01 { name = "深圳" }, }).ExecuteAffrows();
|
||||||
|
|
||||||
var val1 = string.Join(",", fsql.Select<StringJoin01>().ToList(a => a.name));
|
var val1 = string.Join(",", fsql.Select<StringJoin01>().ToList(a => a.name));
|
||||||
var val2 = fsql.Select<StringJoin01>().ToList(a => string.Join(",", fsql.Select<StringJoin01>().As("b").ToList(b => b.name)));
|
var val2 = fsql.Select<StringJoin01>().ToList(a => string.Join(",", fsql.Select<StringJoin01>().As("b").ToList(b => b.name)));
|
||||||
@ -96,7 +96,7 @@ namespace FreeSql.Tests.KingbaseESExpression
|
|||||||
[Fact]
|
[Fact]
|
||||||
public void Format()
|
public void Format()
|
||||||
{
|
{
|
||||||
var item = g.kingbaseES.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
var item = g.kingbaseES.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
||||||
var sql = select.WhereDynamic(item).ToSql(a => new
|
var sql = select.WhereDynamic(item).ToSql(a => new
|
||||||
{
|
{
|
||||||
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}",
|
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}",
|
||||||
@ -119,9 +119,9 @@ WHERE (a.""ID"" = {item.Id})", sql);
|
|||||||
[Fact]
|
[Fact]
|
||||||
public void Format4()
|
public void Format4()
|
||||||
{
|
{
|
||||||
//3个 {} 时,Arguments 解析出来是分开的
|
//3个 {} 时,Arguments 解析出来是分开的
|
||||||
//4个 {} 时,Arguments[1] 只能解析这个出来,然后里面是 NewArray []
|
//4个 {} 时,Arguments[1] 只能解析这个出来,然后里面是 NewArray []
|
||||||
var item = g.kingbaseES.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
var item = g.kingbaseES.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
||||||
var sql = select.WhereDynamic(item).ToSql(a => new
|
var sql = select.WhereDynamic(item).ToSql(a => new
|
||||||
{
|
{
|
||||||
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}{a.Title}",
|
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}{a.Title}",
|
||||||
@ -279,6 +279,17 @@ WHERE (a.""ID"" = {item.Id})", sql);
|
|||||||
//SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a__Type.`Guid` as4, a__Type.`ParentId` as5, a__Type.`Name` as6, a.`Title` as7, a.`CreateTime` as8
|
//SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a__Type.`Guid` as4, a__Type.`ParentId` as5, a__Type.`Name` as6, a.`Title` as7, a.`CreateTime` as8
|
||||||
//FROM `tb_topic` a, `TestTypeInfo` a__Type
|
//FROM `tb_topic` a, `TestTypeInfo` a__Type
|
||||||
//WHERE((concat(a.`Title`, 'aaa')) LIKE concat('%', a__Type.`Name`, '%'))
|
//WHERE((concat(a.`Title`, 'aaa')) LIKE concat('%', a__Type.`Name`, '%'))
|
||||||
|
|
||||||
|
|
||||||
|
list.Add(select.Where(a => a.Title.Contains("%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.Title.Contains(a.Title + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.Title.Contains(a.Title + 1 + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.Title.Contains(a.Type.Name + "%")).ToList());
|
||||||
|
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains("aaa" + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Title + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Title + 1 + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Type.Name + "%")).ToList());
|
||||||
}
|
}
|
||||||
[Fact]
|
[Fact]
|
||||||
public void ToLower()
|
public void ToLower()
|
||||||
|
@ -260,6 +260,17 @@ WHERE (a.[Id] = {item.Id})", sql);
|
|||||||
var ret = fsql.Select<Topic>().Where(a => a.Title.Contains(guid)).ToList();
|
var ret = fsql.Select<Topic>().Where(a => a.Title.Contains(guid)).ToList();
|
||||||
Assert.NotEmpty(ret);
|
Assert.NotEmpty(ret);
|
||||||
Assert.Equal($"Test{guid}Contains01", ret[0].Title);
|
Assert.Equal($"Test{guid}Contains01", ret[0].Title);
|
||||||
|
|
||||||
|
|
||||||
|
list.Add(select.Where(a => a.Title.Contains("%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.Title.Contains(a.Title + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.Title.Contains(a.Title + 1 + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.Title.Contains(a.Type.Name + "%")).ToList());
|
||||||
|
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains("aaa" + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Title + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Title + 1 + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Type.Name + "%")).ToList());
|
||||||
}
|
}
|
||||||
[Fact]
|
[Fact]
|
||||||
public void ToLower()
|
public void ToLower()
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
using FreeSql.DataAnnotations;
|
using FreeSql.DataAnnotations;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@ -57,7 +57,7 @@ namespace FreeSql.Tests.MySqlExpression
|
|||||||
{
|
{
|
||||||
var fsql = g.mysql;
|
var fsql = g.mysql;
|
||||||
fsql.Delete<StringJoin01>().Where("1=1").ExecuteAffrows();
|
fsql.Delete<StringJoin01>().Where("1=1").ExecuteAffrows();
|
||||||
fsql.Insert(new[] { new StringJoin01 { name = "北京" }, new StringJoin01 { name = "上海" }, new StringJoin01 { name = "深圳" }, }).ExecuteAffrows();
|
fsql.Insert(new[] { new StringJoin01 { name = "北京" }, new StringJoin01 { name = "上海" }, new StringJoin01 { name = "深圳" }, }).ExecuteAffrows();
|
||||||
|
|
||||||
var val1 = string.Join(",", fsql.Select<StringJoin01>().ToList(a => a.name));
|
var val1 = string.Join(",", fsql.Select<StringJoin01>().ToList(a => a.name));
|
||||||
var val2 = fsql.Select<StringJoin01>().ToList(a => string.Join(",", fsql.Select<StringJoin01>().As("b").ToList(b => b.name)));
|
var val2 = fsql.Select<StringJoin01>().ToList(a => string.Join(",", fsql.Select<StringJoin01>().As("b").ToList(b => b.name)));
|
||||||
@ -98,7 +98,7 @@ namespace FreeSql.Tests.MySqlExpression
|
|||||||
[Fact]
|
[Fact]
|
||||||
public void Format()
|
public void Format()
|
||||||
{
|
{
|
||||||
var item = g.mysql.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
var item = g.mysql.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
||||||
var sql = select.WhereDynamic(item).ToSql(a => new
|
var sql = select.WhereDynamic(item).ToSql(a => new
|
||||||
{
|
{
|
||||||
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}",
|
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}",
|
||||||
@ -121,9 +121,9 @@ WHERE (a.`Id` = {item.Id})", sql);
|
|||||||
[Fact]
|
[Fact]
|
||||||
public void Format4()
|
public void Format4()
|
||||||
{
|
{
|
||||||
//3个 {} 时,Arguments 解析出来是分开的
|
//3个 {} 时,Arguments 解析出来是分开的
|
||||||
//4个 {} 时,Arguments[1] 只能解析这个出来,然后里面是 NewArray []
|
//4个 {} 时,Arguments[1] 只能解析这个出来,然后里面是 NewArray []
|
||||||
var item = g.mysql.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
var item = g.mysql.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
||||||
var sql = select.WhereDynamic(item).ToSql(a => new
|
var sql = select.WhereDynamic(item).ToSql(a => new
|
||||||
{
|
{
|
||||||
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}{a.Title}",
|
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}{a.Title}",
|
||||||
@ -281,6 +281,17 @@ WHERE (a.`Id` = {item.Id})", sql);
|
|||||||
//SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a__Type.`Guid` as4, a__Type.`ParentId` as5, a__Type.`Name` as6, a.`Title` as7, a.`CreateTime` as8
|
//SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a__Type.`Guid` as4, a__Type.`ParentId` as5, a__Type.`Name` as6, a.`Title` as7, a.`CreateTime` as8
|
||||||
//FROM `tb_topic` a, `TestTypeInfo` a__Type
|
//FROM `tb_topic` a, `TestTypeInfo` a__Type
|
||||||
//WHERE((concat(a.`Title`, 'aaa')) LIKE concat('%', a__Type.`Name`, '%'))
|
//WHERE((concat(a.`Title`, 'aaa')) LIKE concat('%', a__Type.`Name`, '%'))
|
||||||
|
|
||||||
|
|
||||||
|
list.Add(select.Where(a => a.Title.Contains("%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.Title.Contains(a.Title + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.Title.Contains(a.Title + 1 + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.Title.Contains(a.Type.Name + "%")).ToList());
|
||||||
|
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains("aaa" + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Title + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Title + 1 + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Type.Name + "%")).ToList());
|
||||||
}
|
}
|
||||||
[Fact]
|
[Fact]
|
||||||
public void ToLower()
|
public void ToLower()
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
using FreeSql.DataAnnotations;
|
using FreeSql.DataAnnotations;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@ -55,7 +55,7 @@ namespace FreeSql.Tests.OracleExpression
|
|||||||
{
|
{
|
||||||
var fsql = g.oracle;
|
var fsql = g.oracle;
|
||||||
fsql.Delete<StringJoin01>().Where("1=1").ExecuteAffrows();
|
fsql.Delete<StringJoin01>().Where("1=1").ExecuteAffrows();
|
||||||
fsql.Insert(new[] { new StringJoin01 { name = "北京" }, new StringJoin01 { name = "上海" }, new StringJoin01 { name = "深圳" }, }).ExecuteAffrows();
|
fsql.Insert(new[] { new StringJoin01 { name = "北京" }, new StringJoin01 { name = "上海" }, new StringJoin01 { name = "深圳" }, }).ExecuteAffrows();
|
||||||
|
|
||||||
var val1 = string.Join(",", fsql.Select<StringJoin01>().ToList(a => a.name));
|
var val1 = string.Join(",", fsql.Select<StringJoin01>().ToList(a => a.name));
|
||||||
var val2 = fsql.Select<StringJoin01>().ToList(a => string.Join(",", fsql.Select<StringJoin01>().As("b").ToList(b => b.name)));
|
var val2 = fsql.Select<StringJoin01>().ToList(a => string.Join(",", fsql.Select<StringJoin01>().As("b").ToList(b => b.name)));
|
||||||
@ -96,7 +96,7 @@ namespace FreeSql.Tests.OracleExpression
|
|||||||
[Fact]
|
[Fact]
|
||||||
public void Format()
|
public void Format()
|
||||||
{
|
{
|
||||||
var item = g.oracle.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
var item = g.oracle.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
||||||
var sql = select.WhereDynamic(item).ToSql(a => new
|
var sql = select.WhereDynamic(item).ToSql(a => new
|
||||||
{
|
{
|
||||||
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}",
|
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}",
|
||||||
@ -119,9 +119,9 @@ WHERE (a.""ID"" = {item.Id})", sql);
|
|||||||
[Fact]
|
[Fact]
|
||||||
public void Format4()
|
public void Format4()
|
||||||
{
|
{
|
||||||
//3个 {} 时,Arguments 解析出来是分开的
|
//3个 {} 时,Arguments 解析出来是分开的
|
||||||
//4个 {} 时,Arguments[1] 只能解析这个出来,然后里面是 NewArray []
|
//4个 {} 时,Arguments[1] 只能解析这个出来,然后里面是 NewArray []
|
||||||
var item = g.oracle.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
var item = g.oracle.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
||||||
var sql = select.WhereDynamic(item).ToSql(a => new
|
var sql = select.WhereDynamic(item).ToSql(a => new
|
||||||
{
|
{
|
||||||
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}{a.Title}",
|
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}{a.Title}",
|
||||||
@ -279,6 +279,17 @@ WHERE (a.""ID"" = {item.Id})", sql);
|
|||||||
//SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a__Type.`Guid` as4, a__Type.`ParentId` as5, a__Type.`Name` as6, a.`Title` as7, a.`CreateTime` as8
|
//SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a__Type.`Guid` as4, a__Type.`ParentId` as5, a__Type.`Name` as6, a.`Title` as7, a.`CreateTime` as8
|
||||||
//FROM `tb_topic` a, `TestTypeInfo` a__Type
|
//FROM `tb_topic` a, `TestTypeInfo` a__Type
|
||||||
//WHERE((concat(a.`Title`, 'aaa')) LIKE concat('%', a__Type.`Name`, '%'))
|
//WHERE((concat(a.`Title`, 'aaa')) LIKE concat('%', a__Type.`Name`, '%'))
|
||||||
|
|
||||||
|
|
||||||
|
list.Add(select.Where(a => a.Title.Contains("%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.Title.Contains(a.Title + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.Title.Contains(a.Title + 1 + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.Title.Contains(a.Type.Name + "%")).ToList());
|
||||||
|
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains("aaa" + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Title + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Title + 1 + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Type.Name + "%")).ToList());
|
||||||
}
|
}
|
||||||
[Fact]
|
[Fact]
|
||||||
public void ToLower()
|
public void ToLower()
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
using FreeSql.DataAnnotations;
|
using FreeSql.DataAnnotations;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@ -55,7 +55,7 @@ namespace FreeSql.Tests.PostgreSQLExpression
|
|||||||
{
|
{
|
||||||
var fsql = g.pgsql;
|
var fsql = g.pgsql;
|
||||||
fsql.Delete<StringJoin01>().Where("1=1").ExecuteAffrows();
|
fsql.Delete<StringJoin01>().Where("1=1").ExecuteAffrows();
|
||||||
fsql.Insert(new[] { new StringJoin01 { name = "北京" }, new StringJoin01 { name = "上海" }, new StringJoin01 { name = "深圳" }, }).ExecuteAffrows();
|
fsql.Insert(new[] { new StringJoin01 { name = "北京" }, new StringJoin01 { name = "上海" }, new StringJoin01 { name = "深圳" }, }).ExecuteAffrows();
|
||||||
|
|
||||||
var val1 = string.Join(",", fsql.Select<StringJoin01>().ToList(a => a.name));
|
var val1 = string.Join(",", fsql.Select<StringJoin01>().ToList(a => a.name));
|
||||||
var val2 = fsql.Select<StringJoin01>().ToList(a => string.Join(",", fsql.Select<StringJoin01>().As("b").ToList(b => b.name)));
|
var val2 = fsql.Select<StringJoin01>().ToList(a => string.Join(",", fsql.Select<StringJoin01>().As("b").ToList(b => b.name)));
|
||||||
@ -99,7 +99,7 @@ namespace FreeSql.Tests.PostgreSQLExpression
|
|||||||
[Fact]
|
[Fact]
|
||||||
public void Format()
|
public void Format()
|
||||||
{
|
{
|
||||||
var item = g.pgsql.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
var item = g.pgsql.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
||||||
var sql = select.WhereDynamic(item).ToSql(a => new
|
var sql = select.WhereDynamic(item).ToSql(a => new
|
||||||
{
|
{
|
||||||
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}",
|
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}",
|
||||||
@ -122,9 +122,9 @@ WHERE (a.""id"" = {item.Id})", sql);
|
|||||||
[Fact]
|
[Fact]
|
||||||
public void Format4()
|
public void Format4()
|
||||||
{
|
{
|
||||||
//3个 {} 时,Arguments 解析出来是分开的
|
//3个 {} 时,Arguments 解析出来是分开的
|
||||||
//4个 {} 时,Arguments[1] 只能解析这个出来,然后里面是 NewArray []
|
//4个 {} 时,Arguments[1] 只能解析这个出来,然后里面是 NewArray []
|
||||||
var item = g.pgsql.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
var item = g.pgsql.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
||||||
var sql = select.WhereDynamic(item).ToSql(a => new
|
var sql = select.WhereDynamic(item).ToSql(a => new
|
||||||
{
|
{
|
||||||
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}{a.Title}",
|
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}{a.Title}",
|
||||||
@ -282,6 +282,17 @@ WHERE (a.""id"" = {item.Id})", sql);
|
|||||||
//SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a__Type.`Guid` as4, a__Type.`ParentId` as5, a__Type.`Name` as6, a.`Title` as7, a.`CreateTime` as8
|
//SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a__Type.`Guid` as4, a__Type.`ParentId` as5, a__Type.`Name` as6, a.`Title` as7, a.`CreateTime` as8
|
||||||
//FROM `tb_topic` a, `TestTypeInfo` a__Type
|
//FROM `tb_topic` a, `TestTypeInfo` a__Type
|
||||||
//WHERE((concat(a.`Title`, 'aaa')) LIKE concat('%', a__Type.`Name`, '%'))
|
//WHERE((concat(a.`Title`, 'aaa')) LIKE concat('%', a__Type.`Name`, '%'))
|
||||||
|
|
||||||
|
|
||||||
|
list.Add(select.Where(a => a.Title.Contains("%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.Title.Contains(a.Title + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.Title.Contains(a.Title + 1 + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.Title.Contains(a.Type.Name + "%")).ToList());
|
||||||
|
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains("aaa" + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Title + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Title + 1 + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Type.Name + "%")).ToList());
|
||||||
}
|
}
|
||||||
[Fact]
|
[Fact]
|
||||||
public void ToLower()
|
public void ToLower()
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
using FreeSql.DataAnnotations;
|
using FreeSql.DataAnnotations;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@ -66,7 +66,7 @@ namespace FreeSql.Tests.ShenTongExpression
|
|||||||
[Fact]
|
[Fact]
|
||||||
public void Format()
|
public void Format()
|
||||||
{
|
{
|
||||||
var item = g.shentong.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
var item = g.shentong.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
||||||
var sql = select.WhereDynamic(item).ToSql(a => new
|
var sql = select.WhereDynamic(item).ToSql(a => new
|
||||||
{
|
{
|
||||||
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}",
|
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}",
|
||||||
@ -89,9 +89,9 @@ WHERE (a.""ID"" = {item.Id})", sql);
|
|||||||
[Fact]
|
[Fact]
|
||||||
public void Format4()
|
public void Format4()
|
||||||
{
|
{
|
||||||
//3个 {} 时,Arguments 解析出来是分开的
|
//3个 {} 时,Arguments 解析出来是分开的
|
||||||
//4个 {} 时,Arguments[1] 只能解析这个出来,然后里面是 NewArray []
|
//4个 {} 时,Arguments[1] 只能解析这个出来,然后里面是 NewArray []
|
||||||
var item = g.shentong.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
var item = g.shentong.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
||||||
var sql = select.WhereDynamic(item).ToSql(a => new
|
var sql = select.WhereDynamic(item).ToSql(a => new
|
||||||
{
|
{
|
||||||
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}{a.Title}",
|
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}{a.Title}",
|
||||||
@ -249,6 +249,17 @@ WHERE (a.""ID"" = {item.Id})", sql);
|
|||||||
//SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a__Type.`Guid` as4, a__Type.`ParentId` as5, a__Type.`Name` as6, a.`Title` as7, a.`CreateTime` as8
|
//SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a__Type.`Guid` as4, a__Type.`ParentId` as5, a__Type.`Name` as6, a.`Title` as7, a.`CreateTime` as8
|
||||||
//FROM `tb_topic` a, `TestTypeInfo` a__Type
|
//FROM `tb_topic` a, `TestTypeInfo` a__Type
|
||||||
//WHERE((concat(a.`Title`, 'aaa')) LIKE concat('%', a__Type.`Name`, '%'))
|
//WHERE((concat(a.`Title`, 'aaa')) LIKE concat('%', a__Type.`Name`, '%'))
|
||||||
|
|
||||||
|
|
||||||
|
list.Add(select.Where(a => a.Title.Contains("%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.Title.Contains(a.Title + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.Title.Contains(a.Title + 1 + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.Title.Contains(a.Type.Name + "%")).ToList());
|
||||||
|
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains("aaa" + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Title + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Title + 1 + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Type.Name + "%")).ToList());
|
||||||
}
|
}
|
||||||
[Fact]
|
[Fact]
|
||||||
public void ToLower()
|
public void ToLower()
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
using FreeSql.DataAnnotations;
|
using FreeSql.DataAnnotations;
|
||||||
using FreeSql.Tests.DataContext.SqlServer;
|
using FreeSql.Tests.DataContext.SqlServer;
|
||||||
using Microsoft.EntityFrameworkCore.Internal;
|
using Microsoft.EntityFrameworkCore.Internal;
|
||||||
using System;
|
using System;
|
||||||
@ -71,7 +71,7 @@ namespace FreeSql.Tests.SqlServerExpression
|
|||||||
{
|
{
|
||||||
var fsql = g.sqlserver;
|
var fsql = g.sqlserver;
|
||||||
fsql.Delete<StringJoin01>().Where("1=1").ExecuteAffrows();
|
fsql.Delete<StringJoin01>().Where("1=1").ExecuteAffrows();
|
||||||
fsql.Insert(new[] { new StringJoin01 { name = "北京" }, new StringJoin01 { name = "上海" }, new StringJoin01 { name = "深圳" }, }).ExecuteAffrows();
|
fsql.Insert(new[] { new StringJoin01 { name = "北京" }, new StringJoin01 { name = "上海" }, new StringJoin01 { name = "深圳" }, }).ExecuteAffrows();
|
||||||
|
|
||||||
var val1 = string.Join(",", fsql.Select<StringJoin01>().ToList(a => a.name));
|
var val1 = string.Join(",", fsql.Select<StringJoin01>().ToList(a => a.name));
|
||||||
var val2 = fsql.Select<StringJoin01>().ToList(a => string.Join(",", fsql.Select<StringJoin01>().As("b").ToList(b => b.name)));
|
var val2 = fsql.Select<StringJoin01>().ToList(a => string.Join(",", fsql.Select<StringJoin01>().As("b").ToList(b => b.name)));
|
||||||
@ -133,7 +133,7 @@ namespace FreeSql.Tests.SqlServerExpression
|
|||||||
{
|
{
|
||||||
w.Id,
|
w.Id,
|
||||||
w.UserName,
|
w.UserName,
|
||||||
当前角色 = string.Join(",", repo.Orm
|
当前角色 = string.Join(",", repo.Orm
|
||||||
.Select<StringJoin02UserRole, StringJoin02Role>()
|
.Select<StringJoin02UserRole, StringJoin02Role>()
|
||||||
.LeftJoin((b, c) => b.RoleId == c.Id)
|
.LeftJoin((b, c) => b.RoleId == c.Id)
|
||||||
.Where((b, c) => b.UserId == w.Id)
|
.Where((b, c) => b.UserId == w.Id)
|
||||||
@ -142,18 +142,18 @@ namespace FreeSql.Tests.SqlServerExpression
|
|||||||
Assert.Equal(2, result.Count);
|
Assert.Equal(2, result.Count);
|
||||||
Assert.Equal(users[0].Id, result[0].Id);
|
Assert.Equal(users[0].Id, result[0].Id);
|
||||||
Assert.Equal("user01", result[0].UserName);
|
Assert.Equal("user01", result[0].UserName);
|
||||||
Assert.Equal("role01,role02,role03", result[0].当前角色);
|
Assert.Equal("role01,role02,role03", result[0].当前角色);
|
||||||
|
|
||||||
Assert.Equal(users[1].Id, result[1].Id);
|
Assert.Equal(users[1].Id, result[1].Id);
|
||||||
Assert.Equal("user02", result[1].UserName);
|
Assert.Equal("user02", result[1].UserName);
|
||||||
Assert.Equal("role01,role03", result[1].当前角色);
|
Assert.Equal("role01,role03", result[1].当前角色);
|
||||||
|
|
||||||
result = repo.Select.ToList(w =>
|
result = repo.Select.ToList(w =>
|
||||||
new
|
new
|
||||||
{
|
{
|
||||||
w.Id,
|
w.Id,
|
||||||
w.UserName,
|
w.UserName,
|
||||||
当前角色 = string.Join(",", repo.Orm
|
当前角色 = string.Join(",", repo.Orm
|
||||||
.Select<StringJoin02UserRole, StringJoin02Role>()
|
.Select<StringJoin02UserRole, StringJoin02Role>()
|
||||||
.LeftJoin(b => b.t1.RoleId == b.t2.Id)
|
.LeftJoin(b => b.t1.RoleId == b.t2.Id)
|
||||||
.Where(b => b.t1.UserId == w.Id)
|
.Where(b => b.t1.UserId == w.Id)
|
||||||
@ -162,11 +162,11 @@ namespace FreeSql.Tests.SqlServerExpression
|
|||||||
Assert.Equal(2, result.Count);
|
Assert.Equal(2, result.Count);
|
||||||
Assert.Equal(users[0].Id, result[0].Id);
|
Assert.Equal(users[0].Id, result[0].Id);
|
||||||
Assert.Equal("user01", result[0].UserName);
|
Assert.Equal("user01", result[0].UserName);
|
||||||
Assert.Equal("role01,role02,role03", result[0].当前角色);
|
Assert.Equal("role01,role02,role03", result[0].当前角色);
|
||||||
|
|
||||||
Assert.Equal(users[1].Id, result[1].Id);
|
Assert.Equal(users[1].Id, result[1].Id);
|
||||||
Assert.Equal("user02", result[1].UserName);
|
Assert.Equal("user02", result[1].UserName);
|
||||||
Assert.Equal("role01,role03", result[1].当前角色);
|
Assert.Equal("role01,role03", result[1].当前角色);
|
||||||
}
|
}
|
||||||
class StringJoin02User
|
class StringJoin02User
|
||||||
{
|
{
|
||||||
@ -223,16 +223,16 @@ namespace FreeSql.Tests.SqlServerExpression
|
|||||||
{
|
{
|
||||||
w.Id,
|
w.Id,
|
||||||
w.UserName,
|
w.UserName,
|
||||||
当前角色 = string.Join(",", w.Roles.AsSelect().ToList(b => b.RoleName))
|
当前角色 = string.Join(",", w.Roles.AsSelect().ToList(b => b.RoleName))
|
||||||
});
|
});
|
||||||
Assert.Equal(2, result.Count);
|
Assert.Equal(2, result.Count);
|
||||||
Assert.Equal(users[0].Id, result[0].Id);
|
Assert.Equal(users[0].Id, result[0].Id);
|
||||||
Assert.Equal("user01", result[0].UserName);
|
Assert.Equal("user01", result[0].UserName);
|
||||||
Assert.Equal("role01,role02,role03", result[0].当前角色);
|
Assert.Equal("role01,role02,role03", result[0].当前角色);
|
||||||
|
|
||||||
Assert.Equal(users[1].Id, result[1].Id);
|
Assert.Equal(users[1].Id, result[1].Id);
|
||||||
Assert.Equal("user02", result[1].UserName);
|
Assert.Equal("user02", result[1].UserName);
|
||||||
Assert.Equal("role01,role03", result[1].当前角色);
|
Assert.Equal("role01,role03", result[1].当前角色);
|
||||||
}
|
}
|
||||||
class StringJoin03User
|
class StringJoin03User
|
||||||
{
|
{
|
||||||
@ -276,7 +276,7 @@ namespace FreeSql.Tests.SqlServerExpression
|
|||||||
[Fact]
|
[Fact]
|
||||||
public void Format()
|
public void Format()
|
||||||
{
|
{
|
||||||
var item = g.sqlserver.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
var item = g.sqlserver.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
||||||
var sql = select.WhereDynamic(item).ToSql(a => new
|
var sql = select.WhereDynamic(item).ToSql(a => new
|
||||||
{
|
{
|
||||||
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}",
|
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}",
|
||||||
@ -299,9 +299,9 @@ WHERE (a.[Id] = {item.Id})", sql);
|
|||||||
[Fact]
|
[Fact]
|
||||||
public void Format4()
|
public void Format4()
|
||||||
{
|
{
|
||||||
//3个 {} 时,Arguments 解析出来是分开的
|
//3个 {} 时,Arguments 解析出来是分开的
|
||||||
//4个 {} 时,Arguments[1] 只能解析这个出来,然后里面是 NewArray []
|
//4个 {} 时,Arguments[1] 只能解析这个出来,然后里面是 NewArray []
|
||||||
var item = g.sqlserver.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
var item = g.sqlserver.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
||||||
var sql = select.WhereDynamic(item).ToSql(a => new
|
var sql = select.WhereDynamic(item).ToSql(a => new
|
||||||
{
|
{
|
||||||
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}{a.Title}",
|
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}{a.Title}",
|
||||||
@ -400,6 +400,27 @@ WHERE (a.[Id] = {item.Id})", sql);
|
|||||||
list.Add(select.Where(a => (a.TitleVarchar + "aaa").Contains(a.TitleVarchar)).ToList());
|
list.Add(select.Where(a => (a.TitleVarchar + "aaa").Contains(a.TitleVarchar)).ToList());
|
||||||
list.Add(select.Where(a => (a.TitleVarchar + "aaa").Contains(a.TitleVarchar + 1)).ToList());
|
list.Add(select.Where(a => (a.TitleVarchar + "aaa").Contains(a.TitleVarchar + 1)).ToList());
|
||||||
list.Add(select.Where(a => (a.TitleVarchar + "aaa").Contains(a.Type.Name)).ToList());
|
list.Add(select.Where(a => (a.TitleVarchar + "aaa").Contains(a.Type.Name)).ToList());
|
||||||
|
|
||||||
|
|
||||||
|
list.Add(select.Where(a => a.Title.Contains("%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.Title.Contains(a.Title + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.Title.Contains(a.Title + 1 + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.Title.Contains(a.Type.Name + "%")).ToList());
|
||||||
|
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains("aaa" + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Title + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Title + 1 + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Type.Name + "%")).ToList());
|
||||||
|
|
||||||
|
list.Add(select.Where(a => a.TitleVarchar.Contains("aaa%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.TitleVarchar.Contains(a.TitleVarchar + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.TitleVarchar.Contains(a.TitleVarchar + 1 + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.TitleVarchar.Contains(a.Type.Name + "%")).ToList());
|
||||||
|
|
||||||
|
list.Add(select.Where(a => (a.TitleVarchar + "aaa").Contains("aaa%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.TitleVarchar + "aaa").Contains(a.TitleVarchar + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.TitleVarchar + "aaa").Contains(a.TitleVarchar + 1 + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.TitleVarchar + "aaa").Contains(a.Type.Name + "%")).ToList());
|
||||||
}
|
}
|
||||||
[Fact]
|
[Fact]
|
||||||
public void ToLower()
|
public void ToLower()
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
using FreeSql.DataAnnotations;
|
using FreeSql.DataAnnotations;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@ -55,7 +55,7 @@ namespace FreeSql.Tests.SqliteExpression
|
|||||||
{
|
{
|
||||||
var fsql = g.sqlite;
|
var fsql = g.sqlite;
|
||||||
fsql.Delete<StringJoin01>().Where("1=1").ExecuteAffrows();
|
fsql.Delete<StringJoin01>().Where("1=1").ExecuteAffrows();
|
||||||
fsql.Insert(new[] { new StringJoin01 { name = "北京" }, new StringJoin01 { name = "上海" }, new StringJoin01 { name = "深圳" }, }).ExecuteAffrows();
|
fsql.Insert(new[] { new StringJoin01 { name = "北京" }, new StringJoin01 { name = "上海" }, new StringJoin01 { name = "深圳" }, }).ExecuteAffrows();
|
||||||
|
|
||||||
var val1 = string.Join(",", fsql.Select<StringJoin01>().ToList(a => a.name));
|
var val1 = string.Join(",", fsql.Select<StringJoin01>().ToList(a => a.name));
|
||||||
var val2 = fsql.Select<StringJoin01>().ToList(a => string.Join(",", fsql.Select<StringJoin01>().As("b").ToList(b => b.name)));
|
var val2 = fsql.Select<StringJoin01>().ToList(a => string.Join(",", fsql.Select<StringJoin01>().As("b").ToList(b => b.name)));
|
||||||
@ -96,7 +96,7 @@ namespace FreeSql.Tests.SqliteExpression
|
|||||||
[Fact]
|
[Fact]
|
||||||
public void Format()
|
public void Format()
|
||||||
{
|
{
|
||||||
var item = g.sqlite.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
var item = g.sqlite.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
||||||
var sql = select.WhereDynamic(item).ToSql(a => new
|
var sql = select.WhereDynamic(item).ToSql(a => new
|
||||||
{
|
{
|
||||||
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}",
|
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}",
|
||||||
@ -119,9 +119,9 @@ WHERE (a.""Id"" = {item.Id})", sql);
|
|||||||
[Fact]
|
[Fact]
|
||||||
public void Format4()
|
public void Format4()
|
||||||
{
|
{
|
||||||
//3个 {} 时,Arguments 解析出来是分开的
|
//3个 {} 时,Arguments 解析出来是分开的
|
||||||
//4个 {} 时,Arguments[1] 只能解析这个出来,然后里面是 NewArray []
|
//4个 {} 时,Arguments[1] 只能解析这个出来,然后里面是 NewArray []
|
||||||
var item = g.sqlite.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
var item = g.sqlite.GetRepository<Topic>().Insert(new Topic { Clicks = 101, Title = "我是中国人101", CreateTime = DateTime.Parse("2020-7-5") });
|
||||||
var sql = select.WhereDynamic(item).ToSql(a => new
|
var sql = select.WhereDynamic(item).ToSql(a => new
|
||||||
{
|
{
|
||||||
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}{a.Title}",
|
str = $"x{a.Id + 1}z-{a.CreateTime.ToString("yyyyMM")}{a.Title}{a.Title}",
|
||||||
@ -279,6 +279,17 @@ WHERE (a.""Id"" = {item.Id})", sql);
|
|||||||
//SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a__Type.`Guid` as4, a__Type.`ParentId` as5, a__Type.`Name` as6, a.`Title` as7, a.`CreateTime` as8
|
//SELECT a.`Id` as1, a.`Clicks` as2, a.`TypeGuid` as3, a__Type.`Guid` as4, a__Type.`ParentId` as5, a__Type.`Name` as6, a.`Title` as7, a.`CreateTime` as8
|
||||||
//FROM `tb_topic` a, `TestTypeInfo` a__Type
|
//FROM `tb_topic` a, `TestTypeInfo` a__Type
|
||||||
//WHERE((concat(a.`Title`, 'aaa')) LIKE concat('%', a__Type.`Name`, '%'))
|
//WHERE((concat(a.`Title`, 'aaa')) LIKE concat('%', a__Type.`Name`, '%'))
|
||||||
|
|
||||||
|
|
||||||
|
list.Add(select.Where(a => a.Title.Contains("%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.Title.Contains(a.Title + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.Title.Contains(a.Title + 1 + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => a.Title.Contains(a.Type.Name + "%")).ToList());
|
||||||
|
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains("aaa" + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Title + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Title + 1 + "%")).ToList());
|
||||||
|
list.Add(select.Where(a => (a.Title + "aaa").Contains(a.Type.Name + "%")).ToList());
|
||||||
}
|
}
|
||||||
[Fact]
|
[Fact]
|
||||||
public void ToLower()
|
public void ToLower()
|
||||||
|
@ -120,7 +120,7 @@ namespace FreeSql.ClickHouse
|
|||||||
tsc.SetMapColumnTmp(null);
|
tsc.SetMapColumnTmp(null);
|
||||||
var args1 = getExp(callExp.Arguments[argIndex]);
|
var args1 = getExp(callExp.Arguments[argIndex]);
|
||||||
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp);
|
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp);
|
||||||
var oldDbParams = objExp.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug
|
var oldDbParams = objExp?.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug
|
||||||
tsc.isNotSetMapColumnTmp = true;
|
tsc.isNotSetMapColumnTmp = true;
|
||||||
var left = objExp == null ? null : getExp(objExp);
|
var left = objExp == null ? null : getExp(objExp);
|
||||||
tsc.isNotSetMapColumnTmp = false;
|
tsc.isNotSetMapColumnTmp = false;
|
||||||
@ -317,6 +317,12 @@ namespace FreeSql.ClickHouse
|
|||||||
case "Contains":
|
case "Contains":
|
||||||
var args0Value = getExp(exp.Arguments[0]);
|
var args0Value = getExp(exp.Arguments[0]);
|
||||||
if (args0Value == "NULL") return $"({left}) IS NULL";
|
if (args0Value == "NULL") return $"({left}) IS NULL";
|
||||||
|
if (args0Value.Contains("%"))
|
||||||
|
{
|
||||||
|
if (exp.Method.Name == "StartsWith") return $"locate({args0Value}, {left}) = 1";
|
||||||
|
if (exp.Method.Name == "EndsWith") return $"locate({args0Value}, {left}) = char_length({args0Value})";
|
||||||
|
return $"locate({args0Value}, {left}) > 0";
|
||||||
|
}
|
||||||
if (exp.Method.Name == "StartsWith") return $"({left}) LIKE {(args0Value.EndsWith("'") ? args0Value.Insert(args0Value.Length - 1, "%") : $"concat({args0Value}, '%')")}";
|
if (exp.Method.Name == "StartsWith") return $"({left}) LIKE {(args0Value.EndsWith("'") ? args0Value.Insert(args0Value.Length - 1, "%") : $"concat({args0Value}, '%')")}";
|
||||||
if (exp.Method.Name == "EndsWith") return $"({left}) LIKE {(args0Value.StartsWith("'") ? args0Value.Insert(1, "%") : $"concat('%', {args0Value})")}";
|
if (exp.Method.Name == "EndsWith") return $"({left}) LIKE {(args0Value.StartsWith("'") ? args0Value.Insert(1, "%") : $"concat('%', {args0Value})")}";
|
||||||
if (args0Value.StartsWith("'") && args0Value.EndsWith("'")) return $"({left}) LIKE {args0Value.Insert(1, "%").Insert(args0Value.Length, "%")}";
|
if (args0Value.StartsWith("'") && args0Value.EndsWith("'")) return $"({left}) LIKE {args0Value.Insert(1, "%").Insert(args0Value.Length, "%")}";
|
||||||
|
@ -122,7 +122,7 @@ namespace FreeSql.Custom
|
|||||||
tsc.SetMapColumnTmp(null);
|
tsc.SetMapColumnTmp(null);
|
||||||
var args1 = getExp(callExp.Arguments[argIndex]);
|
var args1 = getExp(callExp.Arguments[argIndex]);
|
||||||
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp);
|
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp);
|
||||||
var oldDbParams = objExp.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug
|
var oldDbParams = objExp?.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug
|
||||||
tsc.isNotSetMapColumnTmp = true;
|
tsc.isNotSetMapColumnTmp = true;
|
||||||
var left = objExp == null ? null : getExp(objExp);
|
var left = objExp == null ? null : getExp(objExp);
|
||||||
tsc.isNotSetMapColumnTmp = false;
|
tsc.isNotSetMapColumnTmp = false;
|
||||||
|
@ -122,7 +122,7 @@ namespace FreeSql.Dameng
|
|||||||
tsc.SetMapColumnTmp(null);
|
tsc.SetMapColumnTmp(null);
|
||||||
var args1 = getExp(callExp.Arguments[argIndex]);
|
var args1 = getExp(callExp.Arguments[argIndex]);
|
||||||
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp);
|
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp);
|
||||||
var oldDbParams = objExp.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug
|
var oldDbParams = objExp?.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug
|
||||||
tsc.isNotSetMapColumnTmp = true;
|
tsc.isNotSetMapColumnTmp = true;
|
||||||
var left = objExp == null ? null : getExp(objExp);
|
var left = objExp == null ? null : getExp(objExp);
|
||||||
tsc.isNotSetMapColumnTmp = false;
|
tsc.isNotSetMapColumnTmp = false;
|
||||||
@ -301,6 +301,12 @@ namespace FreeSql.Dameng
|
|||||||
case "Contains":
|
case "Contains":
|
||||||
var args0Value = getExp(exp.Arguments[0]);
|
var args0Value = getExp(exp.Arguments[0]);
|
||||||
if (args0Value == "NULL") return $"({left}) IS NULL";
|
if (args0Value == "NULL") return $"({left}) IS NULL";
|
||||||
|
if (args0Value.Contains("%"))
|
||||||
|
{
|
||||||
|
if (exp.Method.Name == "StartsWith") return $"instr({args0Value}, {left}) = 1";
|
||||||
|
if (exp.Method.Name == "EndsWith") return $"instr({args0Value}, {left}) = length({args0Value})";
|
||||||
|
return $"instr({args0Value}, {left}) > 0";
|
||||||
|
}
|
||||||
if (exp.Method.Name == "StartsWith") return $"({left}) LIKE {(args0Value.EndsWith("'") ? args0Value.Insert(args0Value.Length - 1, "%") : $"(to_char({args0Value})||'%')")}";
|
if (exp.Method.Name == "StartsWith") return $"({left}) LIKE {(args0Value.EndsWith("'") ? args0Value.Insert(args0Value.Length - 1, "%") : $"(to_char({args0Value})||'%')")}";
|
||||||
if (exp.Method.Name == "EndsWith") return $"({left}) LIKE {(args0Value.StartsWith("'") ? args0Value.Insert(1, "%") : $"('%'||to_char({args0Value}))")}";
|
if (exp.Method.Name == "EndsWith") return $"({left}) LIKE {(args0Value.StartsWith("'") ? args0Value.Insert(1, "%") : $"('%'||to_char({args0Value}))")}";
|
||||||
if (args0Value.StartsWith("'") && args0Value.EndsWith("'")) return $"({left}) LIKE {args0Value.Insert(1, "%").Insert(args0Value.Length, "%")}";
|
if (args0Value.StartsWith("'") && args0Value.EndsWith("'")) return $"({left}) LIKE {args0Value.Insert(1, "%").Insert(args0Value.Length, "%")}";
|
||||||
|
@ -109,7 +109,7 @@ namespace FreeSql.Firebird
|
|||||||
tsc.SetMapColumnTmp(null);
|
tsc.SetMapColumnTmp(null);
|
||||||
var args1 = getExp(callExp.Arguments[argIndex]);
|
var args1 = getExp(callExp.Arguments[argIndex]);
|
||||||
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp);
|
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp);
|
||||||
var oldDbParams = objExp.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug
|
var oldDbParams = objExp?.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug
|
||||||
tsc.isNotSetMapColumnTmp = true;
|
tsc.isNotSetMapColumnTmp = true;
|
||||||
var left = objExp == null ? null : getExp(objExp);
|
var left = objExp == null ? null : getExp(objExp);
|
||||||
tsc.isNotSetMapColumnTmp = false;
|
tsc.isNotSetMapColumnTmp = false;
|
||||||
@ -288,6 +288,12 @@ namespace FreeSql.Firebird
|
|||||||
case "Contains":
|
case "Contains":
|
||||||
var args0Value = getExp(exp.Arguments[0]);
|
var args0Value = getExp(exp.Arguments[0]);
|
||||||
if (args0Value == "NULL") return $"({left}) IS NULL";
|
if (args0Value == "NULL") return $"({left}) IS NULL";
|
||||||
|
if (args0Value.Contains("%"))
|
||||||
|
{
|
||||||
|
if (exp.Method.Name == "StartsWith") return $"position({args0Value}, {left}) = 1";
|
||||||
|
if (exp.Method.Name == "EndsWith") return $"position({args0Value}, {left}) = char_length({args0Value})";
|
||||||
|
return $"position({args0Value}, {left}) > 0";
|
||||||
|
}
|
||||||
if (exp.Method.Name == "StartsWith") return $"({left}) LIKE {(args0Value.EndsWith("'") ? args0Value.Insert(args0Value.Length - 1, "%") : $"({args0Value})||'%'")}";
|
if (exp.Method.Name == "StartsWith") return $"({left}) LIKE {(args0Value.EndsWith("'") ? args0Value.Insert(args0Value.Length - 1, "%") : $"({args0Value})||'%'")}";
|
||||||
if (exp.Method.Name == "EndsWith") return $"({left}) LIKE {(args0Value.StartsWith("'") ? args0Value.Insert(1, "%") : $"'%'||({args0Value})")}";
|
if (exp.Method.Name == "EndsWith") return $"({left}) LIKE {(args0Value.StartsWith("'") ? args0Value.Insert(1, "%") : $"'%'||({args0Value})")}";
|
||||||
if (args0Value.StartsWith("'") && args0Value.EndsWith("'")) return $"({left}) CONTAINING {args0Value}";
|
if (args0Value.StartsWith("'") && args0Value.EndsWith("'")) return $"({left}) CONTAINING {args0Value}";
|
||||||
|
@ -109,7 +109,7 @@ namespace FreeSql.GBase
|
|||||||
tsc.SetMapColumnTmp(null);
|
tsc.SetMapColumnTmp(null);
|
||||||
var args1 = getExp(callExp.Arguments[argIndex]);
|
var args1 = getExp(callExp.Arguments[argIndex]);
|
||||||
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp);
|
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp);
|
||||||
var oldDbParams = objExp.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug
|
var oldDbParams = objExp?.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug
|
||||||
tsc.isNotSetMapColumnTmp = true;
|
tsc.isNotSetMapColumnTmp = true;
|
||||||
var left = objExp == null ? null : getExp(objExp);
|
var left = objExp == null ? null : getExp(objExp);
|
||||||
tsc.isNotSetMapColumnTmp = false;
|
tsc.isNotSetMapColumnTmp = false;
|
||||||
@ -288,6 +288,12 @@ namespace FreeSql.GBase
|
|||||||
case "Contains":
|
case "Contains":
|
||||||
var args0Value = getExp(exp.Arguments[0]);
|
var args0Value = getExp(exp.Arguments[0]);
|
||||||
if (args0Value == "NULL") return $"({left}) IS NULL";
|
if (args0Value == "NULL") return $"({left}) IS NULL";
|
||||||
|
if (args0Value.Contains("%"))
|
||||||
|
{
|
||||||
|
if (exp.Method.Name == "StartsWith") return $"instr({args0Value}, {left}) = 1";
|
||||||
|
if (exp.Method.Name == "EndsWith") return $"instr({args0Value}, {left}) = char_length({args0Value})";
|
||||||
|
return $"instr({args0Value}, {left}) > 0";
|
||||||
|
}
|
||||||
if (exp.Method.Name == "StartsWith") return $"({left}) LIKE {(args0Value.EndsWith("'") ? args0Value.Insert(args0Value.Length - 1, "%") : $"({args0Value})||'%'")}";
|
if (exp.Method.Name == "StartsWith") return $"({left}) LIKE {(args0Value.EndsWith("'") ? args0Value.Insert(args0Value.Length - 1, "%") : $"({args0Value})||'%'")}";
|
||||||
if (exp.Method.Name == "EndsWith") return $"({left}) LIKE {(args0Value.StartsWith("'") ? args0Value.Insert(1, "%") : $"'%'||({args0Value})")}";
|
if (exp.Method.Name == "EndsWith") return $"({left}) LIKE {(args0Value.StartsWith("'") ? args0Value.Insert(1, "%") : $"'%'||({args0Value})")}";
|
||||||
if (args0Value.StartsWith("'") && args0Value.EndsWith("'")) return $"({left}) LIKE {args0Value.Insert(1, "%").Insert(args0Value.Length, "%")}";
|
if (args0Value.StartsWith("'") && args0Value.EndsWith("'")) return $"({left}) LIKE {args0Value.Insert(1, "%").Insert(args0Value.Length, "%")}";
|
||||||
|
@ -146,7 +146,7 @@ namespace FreeSql.KingbaseES
|
|||||||
tsc.SetMapColumnTmp(null);
|
tsc.SetMapColumnTmp(null);
|
||||||
var args1 = getExp(callExp.Arguments[argIndex]);
|
var args1 = getExp(callExp.Arguments[argIndex]);
|
||||||
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp);
|
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp);
|
||||||
var oldDbParams = objExp.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug
|
var oldDbParams = objExp?.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug
|
||||||
tsc.isNotSetMapColumnTmp = true;
|
tsc.isNotSetMapColumnTmp = true;
|
||||||
left = objExp == null ? null : getExp(objExp);
|
left = objExp == null ? null : getExp(objExp);
|
||||||
tsc.isNotSetMapColumnTmp = false;
|
tsc.isNotSetMapColumnTmp = false;
|
||||||
@ -368,6 +368,12 @@ namespace FreeSql.KingbaseES
|
|||||||
case "Contains":
|
case "Contains":
|
||||||
var args0Value = getExp(exp.Arguments[0]);
|
var args0Value = getExp(exp.Arguments[0]);
|
||||||
if (args0Value == "NULL") return $"({left}) IS NULL";
|
if (args0Value == "NULL") return $"({left}) IS NULL";
|
||||||
|
if (args0Value.Contains("%"))
|
||||||
|
{
|
||||||
|
if (exp.Method.Name == "StartsWith") return $"strpos({args0Value}, {left}) = 1";
|
||||||
|
if (exp.Method.Name == "EndsWith") return $"strpos({args0Value}, {left}) = char_length({args0Value})";
|
||||||
|
return $"strpos({args0Value}, {left}) > 0";
|
||||||
|
}
|
||||||
var likeOpt = "LIKE";
|
var likeOpt = "LIKE";
|
||||||
if (exp.Arguments.Count > 1)
|
if (exp.Arguments.Count > 1)
|
||||||
{
|
{
|
||||||
|
@ -92,7 +92,7 @@ namespace FreeSql.MsAccess
|
|||||||
tsc.SetMapColumnTmp(null);
|
tsc.SetMapColumnTmp(null);
|
||||||
var args1 = getExp(callExp.Arguments[argIndex]);
|
var args1 = getExp(callExp.Arguments[argIndex]);
|
||||||
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp);
|
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp);
|
||||||
var oldDbParams = objExp.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug
|
var oldDbParams = objExp?.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug
|
||||||
tsc.isNotSetMapColumnTmp = true;
|
tsc.isNotSetMapColumnTmp = true;
|
||||||
var left = objExp == null ? null : getExp(objExp);
|
var left = objExp == null ? null : getExp(objExp);
|
||||||
tsc.isNotSetMapColumnTmp = false;
|
tsc.isNotSetMapColumnTmp = false;
|
||||||
@ -262,6 +262,12 @@ namespace FreeSql.MsAccess
|
|||||||
case "Contains":
|
case "Contains":
|
||||||
var args0Value = getExp(exp.Arguments[0]);
|
var args0Value = getExp(exp.Arguments[0]);
|
||||||
if (args0Value == "NULL") return $"({left}) IS NULL";
|
if (args0Value == "NULL") return $"({left}) IS NULL";
|
||||||
|
if (args0Value.Contains("%"))
|
||||||
|
{
|
||||||
|
if (exp.Method.Name == "StartsWith") return $"instr({args0Value}, {left}) = 1";
|
||||||
|
if (exp.Method.Name == "EndsWith") return $"instr({args0Value}, {left}) = len({args0Value})";
|
||||||
|
return $"instr({args0Value}, {left}) > 0";
|
||||||
|
}
|
||||||
if (exp.Method.Name == "StartsWith") return $"({left}) LIKE {(args0Value.EndsWith("'") ? args0Value.Insert(args0Value.Length - 1, "%") : $"({args0Value}+'%')")}";
|
if (exp.Method.Name == "StartsWith") return $"({left}) LIKE {(args0Value.EndsWith("'") ? args0Value.Insert(args0Value.Length - 1, "%") : $"({args0Value}+'%')")}";
|
||||||
if (exp.Method.Name == "EndsWith") return $"({left}) LIKE {(args0Value.StartsWith("'") ? args0Value.Insert(1, "%") : $"('%'+{args0Value})")}";
|
if (exp.Method.Name == "EndsWith") return $"({left}) LIKE {(args0Value.StartsWith("'") ? args0Value.Insert(1, "%") : $"('%'+{args0Value})")}";
|
||||||
if (args0Value.StartsWith("'") && args0Value.EndsWith("'")) return $"({left}) LIKE {args0Value.Insert(1, "%").Insert(args0Value.Length, "%")}";
|
if (args0Value.StartsWith("'") && args0Value.EndsWith("'")) return $"({left}) LIKE {args0Value.Insert(1, "%").Insert(args0Value.Length, "%")}";
|
||||||
|
@ -120,7 +120,7 @@ namespace FreeSql.MySql
|
|||||||
tsc.SetMapColumnTmp(null);
|
tsc.SetMapColumnTmp(null);
|
||||||
var args1 = getExp(callExp.Arguments[argIndex]);
|
var args1 = getExp(callExp.Arguments[argIndex]);
|
||||||
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp);
|
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp);
|
||||||
var oldDbParams = objExp.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug
|
var oldDbParams = objExp?.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug
|
||||||
tsc.isNotSetMapColumnTmp = true;
|
tsc.isNotSetMapColumnTmp = true;
|
||||||
var left = objExp == null ? null : getExp(objExp);
|
var left = objExp == null ? null : getExp(objExp);
|
||||||
tsc.isNotSetMapColumnTmp = false;
|
tsc.isNotSetMapColumnTmp = false;
|
||||||
@ -300,6 +300,12 @@ namespace FreeSql.MySql
|
|||||||
case "Contains":
|
case "Contains":
|
||||||
var args0Value = getExp(exp.Arguments[0]);
|
var args0Value = getExp(exp.Arguments[0]);
|
||||||
if (args0Value == "NULL") return $"({left}) IS NULL";
|
if (args0Value == "NULL") return $"({left}) IS NULL";
|
||||||
|
if (args0Value.Contains("%"))
|
||||||
|
{
|
||||||
|
if (exp.Method.Name == "StartsWith") return $"locate({args0Value}, {left}) = 1";
|
||||||
|
if (exp.Method.Name == "EndsWith") return $"locate({args0Value}, {left}) = char_length({args0Value})";
|
||||||
|
return $"locate({args0Value}, {left}) > 0";
|
||||||
|
}
|
||||||
if (exp.Method.Name == "StartsWith") return $"({left}) LIKE {(args0Value.EndsWith("'") ? args0Value.Insert(args0Value.Length - 1, "%") : $"concat({args0Value}, '%')")}";
|
if (exp.Method.Name == "StartsWith") return $"({left}) LIKE {(args0Value.EndsWith("'") ? args0Value.Insert(args0Value.Length - 1, "%") : $"concat({args0Value}, '%')")}";
|
||||||
if (exp.Method.Name == "EndsWith") return $"({left}) LIKE {(args0Value.StartsWith("'") ? args0Value.Insert(1, "%") : $"concat('%', {args0Value})")}";
|
if (exp.Method.Name == "EndsWith") return $"({left}) LIKE {(args0Value.StartsWith("'") ? args0Value.Insert(1, "%") : $"concat('%', {args0Value})")}";
|
||||||
if (args0Value.StartsWith("'") && args0Value.EndsWith("'")) return $"({left}) LIKE {args0Value.Insert(1, "%").Insert(args0Value.Length, "%")}";
|
if (args0Value.StartsWith("'") && args0Value.EndsWith("'")) return $"({left}) LIKE {args0Value.Insert(1, "%").Insert(args0Value.Length, "%")}";
|
||||||
|
@ -122,7 +122,7 @@ namespace FreeSql.Odbc.Dameng
|
|||||||
tsc.SetMapColumnTmp(null);
|
tsc.SetMapColumnTmp(null);
|
||||||
var args1 = getExp(callExp.Arguments[argIndex]);
|
var args1 = getExp(callExp.Arguments[argIndex]);
|
||||||
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp);
|
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp);
|
||||||
var oldDbParams = objExp.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug
|
var oldDbParams = objExp?.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug
|
||||||
tsc.isNotSetMapColumnTmp = true;
|
tsc.isNotSetMapColumnTmp = true;
|
||||||
var left = objExp == null ? null : getExp(objExp);
|
var left = objExp == null ? null : getExp(objExp);
|
||||||
tsc.isNotSetMapColumnTmp = false;
|
tsc.isNotSetMapColumnTmp = false;
|
||||||
@ -301,6 +301,12 @@ namespace FreeSql.Odbc.Dameng
|
|||||||
case "Contains":
|
case "Contains":
|
||||||
var args0Value = getExp(exp.Arguments[0]);
|
var args0Value = getExp(exp.Arguments[0]);
|
||||||
if (args0Value == "NULL") return $"({left}) IS NULL";
|
if (args0Value == "NULL") return $"({left}) IS NULL";
|
||||||
|
if (args0Value.Contains("%"))
|
||||||
|
{
|
||||||
|
if (exp.Method.Name == "StartsWith") return $"instr({args0Value}, {left}) = 1";
|
||||||
|
if (exp.Method.Name == "EndsWith") return $"instr({args0Value}, {left}) = length({args0Value})";
|
||||||
|
return $"instr({args0Value}, {left}) > 0";
|
||||||
|
}
|
||||||
if (exp.Method.Name == "StartsWith") return $"({left}) LIKE {(args0Value.EndsWith("'") ? args0Value.Insert(args0Value.Length - 1, "%") : $"(to_char({args0Value})||'%')")}";
|
if (exp.Method.Name == "StartsWith") return $"({left}) LIKE {(args0Value.EndsWith("'") ? args0Value.Insert(args0Value.Length - 1, "%") : $"(to_char({args0Value})||'%')")}";
|
||||||
if (exp.Method.Name == "EndsWith") return $"({left}) LIKE {(args0Value.StartsWith("'") ? args0Value.Insert(1, "%") : $"('%'||to_char({args0Value}))")}";
|
if (exp.Method.Name == "EndsWith") return $"({left}) LIKE {(args0Value.StartsWith("'") ? args0Value.Insert(1, "%") : $"('%'||to_char({args0Value}))")}";
|
||||||
if (args0Value.StartsWith("'") && args0Value.EndsWith("'")) return $"({left}) LIKE {args0Value.Insert(1, "%").Insert(args0Value.Length, "%")}";
|
if (args0Value.StartsWith("'") && args0Value.EndsWith("'")) return $"({left}) LIKE {args0Value.Insert(1, "%").Insert(args0Value.Length, "%")}";
|
||||||
|
@ -122,7 +122,7 @@ namespace FreeSql.Odbc.Default
|
|||||||
tsc.SetMapColumnTmp(null);
|
tsc.SetMapColumnTmp(null);
|
||||||
var args1 = getExp(callExp.Arguments[argIndex]);
|
var args1 = getExp(callExp.Arguments[argIndex]);
|
||||||
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp);
|
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp);
|
||||||
var oldDbParams = objExp.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug
|
var oldDbParams = objExp?.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug
|
||||||
tsc.isNotSetMapColumnTmp = true;
|
tsc.isNotSetMapColumnTmp = true;
|
||||||
var left = objExp == null ? null : getExp(objExp);
|
var left = objExp == null ? null : getExp(objExp);
|
||||||
tsc.isNotSetMapColumnTmp = false;
|
tsc.isNotSetMapColumnTmp = false;
|
||||||
|
@ -146,7 +146,7 @@ namespace FreeSql.Odbc.KingbaseES
|
|||||||
tsc.SetMapColumnTmp(null);
|
tsc.SetMapColumnTmp(null);
|
||||||
var args1 = getExp(callExp.Arguments[argIndex]);
|
var args1 = getExp(callExp.Arguments[argIndex]);
|
||||||
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp);
|
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp);
|
||||||
var oldDbParams = objExp.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug
|
var oldDbParams = objExp?.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug
|
||||||
tsc.isNotSetMapColumnTmp = true;
|
tsc.isNotSetMapColumnTmp = true;
|
||||||
left = objExp == null ? null : getExp(objExp);
|
left = objExp == null ? null : getExp(objExp);
|
||||||
tsc.isNotSetMapColumnTmp = false;
|
tsc.isNotSetMapColumnTmp = false;
|
||||||
@ -368,6 +368,12 @@ namespace FreeSql.Odbc.KingbaseES
|
|||||||
case "Contains":
|
case "Contains":
|
||||||
var args0Value = getExp(exp.Arguments[0]);
|
var args0Value = getExp(exp.Arguments[0]);
|
||||||
if (args0Value == "NULL") return $"({left}) IS NULL";
|
if (args0Value == "NULL") return $"({left}) IS NULL";
|
||||||
|
if (args0Value.Contains("%"))
|
||||||
|
{
|
||||||
|
if (exp.Method.Name == "StartsWith") return $"strpos({args0Value}, {left}) = 1";
|
||||||
|
if (exp.Method.Name == "EndsWith") return $"strpos({args0Value}, {left}) = char_length({args0Value})";
|
||||||
|
return $"strpos({args0Value}, {left}) > 0";
|
||||||
|
}
|
||||||
var likeOpt = "LIKE";
|
var likeOpt = "LIKE";
|
||||||
if (exp.Arguments.Count > 1)
|
if (exp.Arguments.Count > 1)
|
||||||
{
|
{
|
||||||
|
@ -118,7 +118,7 @@ namespace FreeSql.Odbc.MySql
|
|||||||
tsc.SetMapColumnTmp(null);
|
tsc.SetMapColumnTmp(null);
|
||||||
var args1 = getExp(callExp.Arguments[argIndex]);
|
var args1 = getExp(callExp.Arguments[argIndex]);
|
||||||
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp);
|
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp);
|
||||||
var oldDbParams = objExp.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug
|
var oldDbParams = objExp?.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug
|
||||||
tsc.isNotSetMapColumnTmp = true;
|
tsc.isNotSetMapColumnTmp = true;
|
||||||
var left = objExp == null ? null : getExp(objExp);
|
var left = objExp == null ? null : getExp(objExp);
|
||||||
tsc.isNotSetMapColumnTmp = false;
|
tsc.isNotSetMapColumnTmp = false;
|
||||||
@ -298,6 +298,12 @@ namespace FreeSql.Odbc.MySql
|
|||||||
case "Contains":
|
case "Contains":
|
||||||
var args0Value = getExp(exp.Arguments[0]);
|
var args0Value = getExp(exp.Arguments[0]);
|
||||||
if (args0Value == "NULL") return $"({left}) IS NULL";
|
if (args0Value == "NULL") return $"({left}) IS NULL";
|
||||||
|
if (args0Value.Contains("%"))
|
||||||
|
{
|
||||||
|
if (exp.Method.Name == "StartsWith") return $"locate({args0Value}, {left}) = 1";
|
||||||
|
if (exp.Method.Name == "EndsWith") return $"locate({args0Value}, {left}) = char_length({args0Value})";
|
||||||
|
return $"locate({args0Value}, {left}) > 0";
|
||||||
|
}
|
||||||
if (exp.Method.Name == "StartsWith") return $"({left}) LIKE {(args0Value.EndsWith("'") ? args0Value.Insert(args0Value.Length - 1, "%") : $"concat({args0Value}, '%')")}";
|
if (exp.Method.Name == "StartsWith") return $"({left}) LIKE {(args0Value.EndsWith("'") ? args0Value.Insert(args0Value.Length - 1, "%") : $"concat({args0Value}, '%')")}";
|
||||||
if (exp.Method.Name == "EndsWith") return $"({left}) LIKE {(args0Value.StartsWith("'") ? args0Value.Insert(1, "%") : $"concat('%', {args0Value})")}";
|
if (exp.Method.Name == "EndsWith") return $"({left}) LIKE {(args0Value.StartsWith("'") ? args0Value.Insert(1, "%") : $"concat('%', {args0Value})")}";
|
||||||
if (args0Value.StartsWith("'") && args0Value.EndsWith("'")) return $"({left}) LIKE {args0Value.Insert(1, "%").Insert(args0Value.Length, "%")}";
|
if (args0Value.StartsWith("'") && args0Value.EndsWith("'")) return $"({left}) LIKE {args0Value.Insert(1, "%").Insert(args0Value.Length, "%")}";
|
||||||
|
@ -122,7 +122,7 @@ namespace FreeSql.Odbc.Oracle
|
|||||||
tsc.SetMapColumnTmp(null);
|
tsc.SetMapColumnTmp(null);
|
||||||
var args1 = getExp(callExp.Arguments[argIndex]);
|
var args1 = getExp(callExp.Arguments[argIndex]);
|
||||||
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp);
|
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp);
|
||||||
var oldDbParams = objExp.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug
|
var oldDbParams = objExp?.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug
|
||||||
tsc.isNotSetMapColumnTmp = true;
|
tsc.isNotSetMapColumnTmp = true;
|
||||||
var left = objExp == null ? null : getExp(objExp);
|
var left = objExp == null ? null : getExp(objExp);
|
||||||
tsc.isNotSetMapColumnTmp = false;
|
tsc.isNotSetMapColumnTmp = false;
|
||||||
@ -301,6 +301,12 @@ namespace FreeSql.Odbc.Oracle
|
|||||||
case "Contains":
|
case "Contains":
|
||||||
var args0Value = getExp(exp.Arguments[0]);
|
var args0Value = getExp(exp.Arguments[0]);
|
||||||
if (args0Value == "NULL") return $"({left}) IS NULL";
|
if (args0Value == "NULL") return $"({left}) IS NULL";
|
||||||
|
if (args0Value.Contains("%"))
|
||||||
|
{
|
||||||
|
if (exp.Method.Name == "StartsWith") return $"instr({args0Value}, {left}) = 1";
|
||||||
|
if (exp.Method.Name == "EndsWith") return $"instr({args0Value}, {left}) = length({args0Value})";
|
||||||
|
return $"instr({args0Value}, {left}) > 0";
|
||||||
|
}
|
||||||
if (exp.Method.Name == "StartsWith") return $"({left}) LIKE {(args0Value.EndsWith("'") ? args0Value.Insert(args0Value.Length - 1, "%") : $"(to_char({args0Value})||'%')")}";
|
if (exp.Method.Name == "StartsWith") return $"({left}) LIKE {(args0Value.EndsWith("'") ? args0Value.Insert(args0Value.Length - 1, "%") : $"(to_char({args0Value})||'%')")}";
|
||||||
if (exp.Method.Name == "EndsWith") return $"({left}) LIKE {(args0Value.StartsWith("'") ? args0Value.Insert(1, "%") : $"('%'||to_char({args0Value}))")}";
|
if (exp.Method.Name == "EndsWith") return $"({left}) LIKE {(args0Value.StartsWith("'") ? args0Value.Insert(1, "%") : $"('%'||to_char({args0Value}))")}";
|
||||||
if (args0Value.StartsWith("'") && args0Value.EndsWith("'")) return $"({left}) LIKE {args0Value.Insert(1, "%").Insert(args0Value.Length, "%")}";
|
if (args0Value.StartsWith("'") && args0Value.EndsWith("'")) return $"({left}) LIKE {args0Value.Insert(1, "%").Insert(args0Value.Length, "%")}";
|
||||||
|
@ -146,7 +146,7 @@ namespace FreeSql.Odbc.PostgreSQL
|
|||||||
tsc.SetMapColumnTmp(null);
|
tsc.SetMapColumnTmp(null);
|
||||||
var args1 = getExp(callExp.Arguments[argIndex]);
|
var args1 = getExp(callExp.Arguments[argIndex]);
|
||||||
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp);
|
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp);
|
||||||
var oldDbParams = objExp.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug
|
var oldDbParams = objExp?.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug
|
||||||
tsc.isNotSetMapColumnTmp = true;
|
tsc.isNotSetMapColumnTmp = true;
|
||||||
left = objExp == null ? null : getExp(objExp);
|
left = objExp == null ? null : getExp(objExp);
|
||||||
tsc.isNotSetMapColumnTmp = false;
|
tsc.isNotSetMapColumnTmp = false;
|
||||||
@ -390,6 +390,12 @@ namespace FreeSql.Odbc.PostgreSQL
|
|||||||
case "Contains":
|
case "Contains":
|
||||||
var args0Value = getExp(exp.Arguments[0]);
|
var args0Value = getExp(exp.Arguments[0]);
|
||||||
if (args0Value == "NULL") return $"({left}) IS NULL";
|
if (args0Value == "NULL") return $"({left}) IS NULL";
|
||||||
|
if (args0Value.Contains("%"))
|
||||||
|
{
|
||||||
|
if (exp.Method.Name == "StartsWith") return $"strpos({args0Value}, {left}) = 1";
|
||||||
|
if (exp.Method.Name == "EndsWith") return $"strpos({args0Value}, {left}) = char_length({args0Value})";
|
||||||
|
return $"strpos({args0Value}, {left}) > 0";
|
||||||
|
}
|
||||||
var likeOpt = "LIKE";
|
var likeOpt = "LIKE";
|
||||||
if (exp.Arguments.Count > 1)
|
if (exp.Arguments.Count > 1)
|
||||||
{
|
{
|
||||||
|
@ -128,7 +128,7 @@ namespace FreeSql.Odbc.SqlServer
|
|||||||
tsc.SetMapColumnTmp(null);
|
tsc.SetMapColumnTmp(null);
|
||||||
var args1 = getExp(callExp.Arguments[argIndex]);
|
var args1 = getExp(callExp.Arguments[argIndex]);
|
||||||
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp);
|
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp);
|
||||||
var oldDbParams = objExp.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug
|
var oldDbParams = objExp?.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug
|
||||||
tsc.isNotSetMapColumnTmp = true;
|
tsc.isNotSetMapColumnTmp = true;
|
||||||
var left = objExp == null ? null : getExp(objExp);
|
var left = objExp == null ? null : getExp(objExp);
|
||||||
tsc.isNotSetMapColumnTmp = false;
|
tsc.isNotSetMapColumnTmp = false;
|
||||||
@ -321,6 +321,12 @@ namespace FreeSql.Odbc.SqlServer
|
|||||||
case "Contains":
|
case "Contains":
|
||||||
var args0Value = getExp(exp.Arguments[0]);
|
var args0Value = getExp(exp.Arguments[0]);
|
||||||
if (args0Value == "NULL") return $"({left}) IS NULL";
|
if (args0Value == "NULL") return $"({left}) IS NULL";
|
||||||
|
if (args0Value.Contains("%"))
|
||||||
|
{
|
||||||
|
if (exp.Method.Name == "StartsWith") return $"charindex({args0Value}, {left}) = 1";
|
||||||
|
if (exp.Method.Name == "EndsWith") return $"charindex({args0Value}, {left}) = len({args0Value})";
|
||||||
|
return $"charindex({args0Value}, {left}) > 0";
|
||||||
|
}
|
||||||
if (exp.Method.Name == "StartsWith") return $"({left}) LIKE {(args0Value.EndsWith("'") ? args0Value.Insert(args0Value.Length - 1, "%") : $"(cast({args0Value} as nvarchar(max))+'%')")}";
|
if (exp.Method.Name == "StartsWith") return $"({left}) LIKE {(args0Value.EndsWith("'") ? args0Value.Insert(args0Value.Length - 1, "%") : $"(cast({args0Value} as nvarchar(max))+'%')")}";
|
||||||
if (exp.Method.Name == "EndsWith") return $"({left}) LIKE {(args0Value.StartsWith("'") ? args0Value.Insert(1, "%") : $"('%'+cast({args0Value} as nvarchar(max)))")}";
|
if (exp.Method.Name == "EndsWith") return $"({left}) LIKE {(args0Value.StartsWith("'") ? args0Value.Insert(1, "%") : $"('%'+cast({args0Value} as nvarchar(max)))")}";
|
||||||
if (args0Value.StartsWith("'") && args0Value.EndsWith("'")) return $"({left}) LIKE {args0Value.Insert(1, "%").Insert(args0Value.Length, "%")}";
|
if (args0Value.StartsWith("'") && args0Value.EndsWith("'")) return $"({left}) LIKE {args0Value.Insert(1, "%").Insert(args0Value.Length, "%")}";
|
||||||
|
@ -122,7 +122,7 @@ namespace FreeSql.Oracle
|
|||||||
tsc.SetMapColumnTmp(null);
|
tsc.SetMapColumnTmp(null);
|
||||||
var args1 = getExp(callExp.Arguments[argIndex]);
|
var args1 = getExp(callExp.Arguments[argIndex]);
|
||||||
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp);
|
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp);
|
||||||
var oldDbParams = objExp.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug
|
var oldDbParams = objExp?.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug
|
||||||
tsc.isNotSetMapColumnTmp = true;
|
tsc.isNotSetMapColumnTmp = true;
|
||||||
var left = objExp == null ? null : getExp(objExp);
|
var left = objExp == null ? null : getExp(objExp);
|
||||||
tsc.isNotSetMapColumnTmp = false;
|
tsc.isNotSetMapColumnTmp = false;
|
||||||
@ -301,6 +301,12 @@ namespace FreeSql.Oracle
|
|||||||
case "Contains":
|
case "Contains":
|
||||||
var args0Value = getExp(exp.Arguments[0]);
|
var args0Value = getExp(exp.Arguments[0]);
|
||||||
if (args0Value == "NULL") return $"({left}) IS NULL";
|
if (args0Value == "NULL") return $"({left}) IS NULL";
|
||||||
|
if (args0Value.Contains("%"))
|
||||||
|
{
|
||||||
|
if (exp.Method.Name == "StartsWith") return $"instr({args0Value}, {left}) = 1";
|
||||||
|
if (exp.Method.Name == "EndsWith") return $"instr({args0Value}, {left}) = length({args0Value})";
|
||||||
|
return $"instr({args0Value}, {left}) > 0";
|
||||||
|
}
|
||||||
if (exp.Method.Name == "StartsWith") return $"({left}) LIKE {(args0Value.EndsWith("'") ? args0Value.Insert(args0Value.Length - 1, "%") : $"(to_char({args0Value})||'%')")}";
|
if (exp.Method.Name == "StartsWith") return $"({left}) LIKE {(args0Value.EndsWith("'") ? args0Value.Insert(args0Value.Length - 1, "%") : $"(to_char({args0Value})||'%')")}";
|
||||||
if (exp.Method.Name == "EndsWith") return $"({left}) LIKE {(args0Value.StartsWith("'") ? args0Value.Insert(1, "%") : $"('%'||to_char({args0Value}))")}";
|
if (exp.Method.Name == "EndsWith") return $"({left}) LIKE {(args0Value.StartsWith("'") ? args0Value.Insert(1, "%") : $"('%'||to_char({args0Value}))")}";
|
||||||
if (args0Value.StartsWith("'") && args0Value.EndsWith("'")) return $"({left}) LIKE {args0Value.Insert(1, "%").Insert(args0Value.Length, "%")}";
|
if (args0Value.StartsWith("'") && args0Value.EndsWith("'")) return $"({left}) LIKE {args0Value.Insert(1, "%").Insert(args0Value.Length, "%")}";
|
||||||
|
@ -177,7 +177,7 @@ namespace FreeSql.PostgreSQL
|
|||||||
tsc.SetMapColumnTmp(null);
|
tsc.SetMapColumnTmp(null);
|
||||||
var args1 = getExp(callExp.Arguments[argIndex]);
|
var args1 = getExp(callExp.Arguments[argIndex]);
|
||||||
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp);
|
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp);
|
||||||
var oldDbParams = objExp.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug
|
var oldDbParams = objExp?.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug
|
||||||
tsc.isNotSetMapColumnTmp = true;
|
tsc.isNotSetMapColumnTmp = true;
|
||||||
left = objExp == null ? null : getExp(objExp);
|
left = objExp == null ? null : getExp(objExp);
|
||||||
tsc.isNotSetMapColumnTmp = false;
|
tsc.isNotSetMapColumnTmp = false;
|
||||||
@ -421,6 +421,12 @@ namespace FreeSql.PostgreSQL
|
|||||||
case "Contains":
|
case "Contains":
|
||||||
var args0Value = getExp(exp.Arguments[0]);
|
var args0Value = getExp(exp.Arguments[0]);
|
||||||
if (args0Value == "NULL") return $"({left}) IS NULL";
|
if (args0Value == "NULL") return $"({left}) IS NULL";
|
||||||
|
if (args0Value.Contains("%"))
|
||||||
|
{
|
||||||
|
if (exp.Method.Name == "StartsWith") return $"strpos({args0Value}, {left}) = 1";
|
||||||
|
if (exp.Method.Name == "EndsWith") return $"strpos({args0Value}, {left}) = char_length({args0Value})";
|
||||||
|
return $"strpos({args0Value}, {left}) > 0";
|
||||||
|
}
|
||||||
var likeOpt = "LIKE";
|
var likeOpt = "LIKE";
|
||||||
if (exp.Arguments.Count > 1)
|
if (exp.Arguments.Count > 1)
|
||||||
{
|
{
|
||||||
|
@ -128,7 +128,7 @@ namespace FreeSql.ShenTong
|
|||||||
tsc.SetMapColumnTmp(null);
|
tsc.SetMapColumnTmp(null);
|
||||||
var args1 = getExp(callExp.Arguments[argIndex]);
|
var args1 = getExp(callExp.Arguments[argIndex]);
|
||||||
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp);
|
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp);
|
||||||
var oldDbParams = objExp.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug
|
var oldDbParams = objExp?.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug
|
||||||
tsc.isNotSetMapColumnTmp = true;
|
tsc.isNotSetMapColumnTmp = true;
|
||||||
left = objExp == null ? null : getExp(objExp);
|
left = objExp == null ? null : getExp(objExp);
|
||||||
tsc.isNotSetMapColumnTmp = false;
|
tsc.isNotSetMapColumnTmp = false;
|
||||||
@ -345,6 +345,12 @@ namespace FreeSql.ShenTong
|
|||||||
case "Contains":
|
case "Contains":
|
||||||
var args0Value = getExp(exp.Arguments[0]);
|
var args0Value = getExp(exp.Arguments[0]);
|
||||||
if (args0Value == "NULL") return $"({left}) IS NULL";
|
if (args0Value == "NULL") return $"({left}) IS NULL";
|
||||||
|
if (args0Value.Contains("%"))
|
||||||
|
{
|
||||||
|
if (exp.Method.Name == "StartsWith") return $"strpos({args0Value}, {left}) = 1";
|
||||||
|
if (exp.Method.Name == "EndsWith") return $"strpos({args0Value}, {left}) = char_length({args0Value})";
|
||||||
|
return $"strpos({args0Value}, {left}) > 0";
|
||||||
|
}
|
||||||
var likeOpt = "LIKE";
|
var likeOpt = "LIKE";
|
||||||
if (exp.Arguments.Count > 1)
|
if (exp.Arguments.Count > 1)
|
||||||
{
|
{
|
||||||
|
@ -127,7 +127,7 @@ namespace FreeSql.SqlServer
|
|||||||
tsc.SetMapColumnTmp(null);
|
tsc.SetMapColumnTmp(null);
|
||||||
var args1 = getExp(callExp.Arguments[argIndex]);
|
var args1 = getExp(callExp.Arguments[argIndex]);
|
||||||
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp);
|
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp);
|
||||||
var oldDbParams = objExp.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug
|
var oldDbParams = objExp?.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug
|
||||||
tsc.isNotSetMapColumnTmp = true;
|
tsc.isNotSetMapColumnTmp = true;
|
||||||
var left = objExp == null ? null : getExp(objExp);
|
var left = objExp == null ? null : getExp(objExp);
|
||||||
tsc.isNotSetMapColumnTmp = false;
|
tsc.isNotSetMapColumnTmp = false;
|
||||||
@ -320,6 +320,12 @@ namespace FreeSql.SqlServer
|
|||||||
case "Contains":
|
case "Contains":
|
||||||
var args0Value = getExp(exp.Arguments[0]);
|
var args0Value = getExp(exp.Arguments[0]);
|
||||||
if (args0Value == "NULL") return $"({left}) IS NULL";
|
if (args0Value == "NULL") return $"({left}) IS NULL";
|
||||||
|
if (args0Value.Contains("%"))
|
||||||
|
{
|
||||||
|
if (exp.Method.Name == "StartsWith") return $"charindex({args0Value}, {left}) = 1";
|
||||||
|
if (exp.Method.Name == "EndsWith") return $"charindex({args0Value}, {left}) = len({args0Value})";
|
||||||
|
return $"charindex({args0Value}, {left}) > 0";
|
||||||
|
}
|
||||||
if (exp.Method.Name == "StartsWith") return $"({left}) LIKE {(args0Value.EndsWith("'") ? args0Value.Insert(args0Value.Length - 1, "%") : $"(cast({args0Value} as nvarchar(max))+'%')")}";
|
if (exp.Method.Name == "StartsWith") return $"({left}) LIKE {(args0Value.EndsWith("'") ? args0Value.Insert(args0Value.Length - 1, "%") : $"(cast({args0Value} as nvarchar(max))+'%')")}";
|
||||||
if (exp.Method.Name == "EndsWith") return $"({left}) LIKE {(args0Value.StartsWith("'") ? args0Value.Insert(1, "%") : $"('%'+cast({args0Value} as nvarchar(max)))")}";
|
if (exp.Method.Name == "EndsWith") return $"({left}) LIKE {(args0Value.StartsWith("'") ? args0Value.Insert(1, "%") : $"('%'+cast({args0Value} as nvarchar(max)))")}";
|
||||||
if (args0Value.StartsWith("'") && args0Value.EndsWith("'")) return $"({left}) LIKE {args0Value.Insert(1, "%").Insert(args0Value.Length, "%")}";
|
if (args0Value.StartsWith("'") && args0Value.EndsWith("'")) return $"({left}) LIKE {args0Value.Insert(1, "%").Insert(args0Value.Length, "%")}";
|
||||||
|
@ -118,7 +118,7 @@ namespace FreeSql.Sqlite
|
|||||||
tsc.SetMapColumnTmp(null);
|
tsc.SetMapColumnTmp(null);
|
||||||
var args1 = getExp(callExp.Arguments[argIndex]);
|
var args1 = getExp(callExp.Arguments[argIndex]);
|
||||||
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp);
|
var oldMapType = tsc.SetMapTypeReturnOld(tsc.mapTypeTmp);
|
||||||
var oldDbParams = objExp.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug
|
var oldDbParams = objExp?.NodeType == ExpressionType.MemberAccess ? tsc.SetDbParamsReturnOld(null) : null; //#900 UseGenerateCommandParameterWithLambda(true) 子查询 bug、以及 #1173 参数化 bug
|
||||||
tsc.isNotSetMapColumnTmp = true;
|
tsc.isNotSetMapColumnTmp = true;
|
||||||
var left = objExp == null ? null : getExp(objExp);
|
var left = objExp == null ? null : getExp(objExp);
|
||||||
tsc.isNotSetMapColumnTmp = false;
|
tsc.isNotSetMapColumnTmp = false;
|
||||||
@ -297,6 +297,12 @@ namespace FreeSql.Sqlite
|
|||||||
case "Contains":
|
case "Contains":
|
||||||
var args0Value = getExp(exp.Arguments[0]);
|
var args0Value = getExp(exp.Arguments[0]);
|
||||||
if (args0Value == "NULL") return $"({left}) IS NULL";
|
if (args0Value == "NULL") return $"({left}) IS NULL";
|
||||||
|
if (args0Value.Contains("%"))
|
||||||
|
{
|
||||||
|
if (exp.Method.Name == "StartsWith") return $"instr({args0Value}, {left}) = 1";
|
||||||
|
if (exp.Method.Name == "EndsWith") return $"instr({args0Value}, {left}) = length({args0Value})";
|
||||||
|
return $"instr({args0Value}, {left}) > 0";
|
||||||
|
}
|
||||||
if (exp.Method.Name == "StartsWith") return $"({left}) LIKE {(args0Value.EndsWith("'") ? args0Value.Insert(args0Value.Length - 1, "%") : $"({args0Value})||'%'")}";
|
if (exp.Method.Name == "StartsWith") return $"({left}) LIKE {(args0Value.EndsWith("'") ? args0Value.Insert(args0Value.Length - 1, "%") : $"({args0Value})||'%'")}";
|
||||||
if (exp.Method.Name == "EndsWith") return $"({left}) LIKE {(args0Value.StartsWith("'") ? args0Value.Insert(1, "%") : $"'%'||({args0Value})")}";
|
if (exp.Method.Name == "EndsWith") return $"({left}) LIKE {(args0Value.StartsWith("'") ? args0Value.Insert(1, "%") : $"'%'||({args0Value})")}";
|
||||||
if (args0Value.StartsWith("'") && args0Value.EndsWith("'")) return $"({left}) LIKE {args0Value.Insert(1, "%").Insert(args0Value.Length, "%")}";
|
if (args0Value.StartsWith("'") && args0Value.EndsWith("'")) return $"({left}) LIKE {args0Value.Insert(1, "%").Insert(args0Value.Length, "%")}";
|
||||||
|
Loading…
x
Reference in New Issue
Block a user