MyDAL - like && not like 条件 使用

匿名 (未验证) 提交于 2019-12-02 22:06:11

索引:

目录索引

一.API 列表

  C# 代码中 String.Contains("conditionStr") 生成 SQL 对应的 like '%conditionStr%'

      ... ...

      .Where(it => it.PathId.Contains("~00-d-3-1-"))

      ... ... 用于 单表 like 条件

      .Queryer(out Agent agent1, out AgentInventoryRecord record1)

      ... ...

      .Where(() => agent1.Name.Contains("陈"))

      ... ... 用于 多表连接 like 条件

  C# 代码中 String.StartsWith("conditionStr") 生成 SQL 对应的 like 'conditionStr%'

      ... ...

      .Where(it => it.PathId.StartsWith("~00-d-3-1-"))

      ... ... 用于 单表 like 条件

      .Queryer(out Agent agent13, out AgentInventoryRecord record13)

      ... ...

      .Where(() => agent13.Name.StartsWith("张"))

      ... ... 用于 多表连接 like 条件

  C# 代码中 String.EndsWith("conditionStr") 生成 SQL 对应的 like '%conditionStr'

      ... ...

      .Where(it => it.PathId.EndsWith("~00-d-3-1-"))

      ... ... 用于 单表 like 条件

      .Queryer(out Agent agent13, out AgentInventoryRecord record13)

      ... ...

      .Where(() => agent13.Name.EndsWith("华"))

      ... ... 用于 多表连接 like 条件

%_

     在 string 变量中若检测到 通配符 存在,则以自定义的通配符表达式 在 DB 中进行 like 查询

/%/_(下划线转义)

转义后 字面值 的形式进行 like 查询

二.API 单表-便捷 方法 举例

  1. like 条件

1 var res1 = await Conn.QueryListAsync<Agent>(it => it.Name.Contains("陈"));

    生成 SQL 如下

1 select * 2 from `agent` 3 where  `Name` like  CONCAT('%',@Name__1,'%');

1 var res1 = await Conn.QueryListAsync<Agent>(it => !it.Name.Contains("刘"));

    生成 SQL 如下

1 select * 2 from `agent` 3 where  `Name` not like  CONCAT('%',@Name__1,'%');

三.API 单表-完整 方法 举例

  1. like 条件

1             var res1 = await Conn 2                 .Queryer<Agent>() 3                 .Where(it => it.CreatedOn >= Convert.ToDateTime("2018-08-23 13:36:58").AddDays(-30)) 4                     .And(it => it.PathId.Contains("~00-d-3-1-")) 5                 .PagingListAsync(1, 10);

    生成 SQL 如下

 1 -- 总数  2 select  count(*)   3 from `agent`  4 where  `CreatedOn`>=@CreatedOn__1  5     and  `PathId` like  CONCAT('%',@PathId__2,'%');  6   7 -- 分页数据  8 select *  9 from `agent` 10 where  `CreatedOn`>=@CreatedOn__1 11     and  `PathId` like  CONCAT('%',@PathId__2,'%') 12 order by `Id` desc 13 limit 0,10;

  2. not like 条件

1             var res1 = await Conn 2                 .Queryer<Agent>() 3                 .Where(it => !it.PathId.Contains("~00-d-3-1-")) 4                 .PagingListAsync(1, 10);

    生成 SQL 如下

 1 -- 总数  2 select  count(*)   3 from `agent`  4 where  `PathId` not like  CONCAT('%',@PathId__1,'%');  5   6 -- 分页数据  7 select *  8 from `agent`  9 where  `PathId` not like  CONCAT('%',@PathId__1,'%') 10 order by `Id` desc 11 limit 0,10;

四.API 多表连接-完整 方法 举例

  1. like 条件

1             var res1 = await Conn 2                 .Queryer(out Agent agent1, out AgentInventoryRecord record1) 3                 .From(() => agent1) 4                     .InnerJoin(() => record1) 5                         .On(() => agent1.Id == record1.AgentId) 6                 .Where(() => agent1.Name.Contains("陈")) 7                 .QueryListAsync<AgentInventoryRecord>();

    生成 SQL 如下

1 select record1.`*` 2 from `agent` as agent1  3     inner join `agentinventoryrecord` as record1 4         on agent1.`Id`=record1.`AgentId` 5 where  agent1.`Name` like  CONCAT('%',@Name__4,'%');

  2. not like 条件

1             var res1 = await Conn 2                 .Queryer(out Agent agent1, out AgentInventoryRecord record1) 3                 .From(() => agent1) 4                     .InnerJoin(() => record1) 5                         .On(() => agent1.Id == record1.AgentId) 6                 .Where(() => !agent1.Name.Contains("陈")) 7                 .QueryListAsync<AgentInventoryRecord>();

    生成 SQL 如下

1 select record1.`*` 2 from `agent` as agent1  3     inner join `agentinventoryrecord` as record1 4         on agent1.`Id`=record1.`AgentId` 5 where  agent1.`Name` not like  CONCAT('%',@Name__4,'%');

五.String.StartsWith() 举例

  1. like 条件

1             var res13 = await Conn 2                 .Queryer(out Agent agent13, out AgentInventoryRecord record13) 3                 .From(() => agent13) 4                     .InnerJoin(() => record13) 5                         .On(() => agent13.Id == record13.AgentId) 6                 .Where(() => agent13.Name.StartsWith("张")) 7                 .QueryListAsync<Agent>();

@Name__4 的值会自动生成

1 select agent13.`*` 2 from `agent` as agent13  3     inner join `agentinventoryrecord` as record13 4         on agent13.`Id`=record13.`AgentId` 5 where  agent13.`Name` like  @Name__4;

  2. not like 条件

1             var res22 = await Conn 2                 .Queryer(out Agent agent22, out AgentInventoryRecord record22) 3                 .From(() => agent22) 4                     .InnerJoin(() => record22) 5                         .On(() => agent22.Id == record22.AgentId) 6                 .Where(() => !agent22.Name.StartsWith("张")) 7                 .QueryListAsync<Agent>();

'张%'

1 select agent22.`*` 2 from `agent` as agent22  3     inner join `agentinventoryrecord` as record22 4         on agent22.`Id`=record22.`AgentId` 5 where  agent22.`Name` not like  @Name__4;

六.String.EndsWith() 举例

  1. like 条件

1             var res13 = await Conn 2                 .Queryer(out Agent agent13, out AgentInventoryRecord record13) 3                 .From(() => agent13) 4                     .InnerJoin(() => record13) 5                         .On(() => agent13.Id == record13.AgentId) 6                 .Where(() => agent13.Name.EndsWith("华")) 7                 .QueryListAsync<Agent>();

'%华'

1 select agent13.`*` 2 from `agent` as agent13  3     inner join `agentinventoryrecord` as record13 4         on agent13.`Id`=record13.`AgentId` 5 where  agent13.`Name` like  @Name__4;

  2. not like 条件

1             var res22 = await Conn 2                 .Queryer(out Agent agent22, out AgentInventoryRecord record22) 3                 .From(() => agent22) 4                     .InnerJoin(() => record22) 5                         .On(() => agent22.Id == record22.AgentId) 6                 .Where(() => !agent22.Name.EndsWith("华")) 7                 .QueryListAsync<Agent>();

1 select agent22.`*` 2 from `agent` as agent22  3     inner join `agentinventoryrecord` as record22 4         on agent22.`Id`=record22.`AgentId` 5 where  agent22.`Name` not like  @Name__4;

1 var res5 = await Conn.QueryListAsync<Agent>(it => it.Name.Contains("陈%"));

    生成 SQL 如下,其中 like 的时候 会保留 原状 按自定义的 格式串 查询,@Name__1 的值为

1 select * 2 from `agent` 3 where  `Name` like  @Name__1;

1 var res6 = await Conn.QueryListAsync<Agent>(it => it.Name.Contains("王_"));

    生成 SQL 如下,其中 like 的时候 会保留 原状 按自己定义的 格式串 查询,@Name__1 的值为

1 select * 2 from `agent` 3 where  `Name` like  @Name__1;

 

1             var res7 = await Conn 2                 .Queryer<Agent>() 3                 .Where(it => it.Name.Contains("刘/%_")) 4                     .And(it => it.Id == resx4.Id) 5                     .And(it => it.Name.Contains("%华")) 6                     .And(it => it.Name.Contains("%/%%")) 7                 .QueryListAsync();

/%_' ,% 会按其 字面义 在DB中匹配查询

1 select * 2 from `agent` 3 where  `Name` like  @Name__1 escape '/' 4     and  `Id`=@Id__2 5     and  `Name` like  @Name__3 6     and  `Name` like  @Name__4 escape '/';

1             var res8 = await Conn.QueryListAsync<Agent>(it => it.Name.Contains("何/__"));

/__' ,_ 会按其 字面义 在DB中匹配查询

1 select * 2 from `agent` 3 where  `Name` like  @Name__1 escape '/';

                                         蒙

                                    2019-02-18 14:45 周一

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!