欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

MyDAL - like && not like 条件 使用

程序员文章站 2022-04-15 17:21:53
索引: 目录索引 一.API 列表 C# 代码中 String.Contains("conditionStr") 生成 SQL 对应的 like '%conditionStr%' 如:.Queryer() ... ... .Where(it => it.PathId.Contains( ......

索引:

目录索引

一.api 列表

  c# 代码中 string.contains("conditionstr") 生成 sql 对应的 like '%conditionstr%'

     如:.queryer<agent>()

      ... ...

      .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%'

     如:.queryer<agent>()

      ... ...

      .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'

     如:.queryer<agent>()

      ... ...

      .where(it => it.pathid.endswith("~00-d-3-1-"))

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

      .queryer(out agent agent13, out agentinventoryrecord record13)

      ... ...

      .where(() => agent13.name.endswith("华"))

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

  mysql 通配符 %(百分号)  /  _(下划线) 

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

  c# 代码中 通配符转义 /%(百分号转义)  /  /_(下划线转义)

        在 string 变量中若检测到 通配符转义 存在 ,则会在 db 中以转义后 字面值 的形式进行 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,'%');

   2. not like 条件

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>();

    生成 sql 如下,其中 @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>();

    生成 sql 如下,其中 @name__4 的值会自动生成 '张%'

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>();

    生成 sql 如下,其中 @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.endswith("华"))
7                 .querylistasync<agent>();

    生成 sql 如下,其中 @name__4 的值会自动生成 '%华'

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;

七.mysql 通配符 %(百分号) 、 _(下划线) 举例

   1. %

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;

  2. _

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;

八.mysql 通配符转义 /%(百分号转义)、/_(下划线转义) 举例

  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();

    生成 sql 如下,其中 @name__1 的值为 '刘/%_' ,% 会按其 字面义 在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 '/';

  2. /_

1             var res8 = await conn.querylistasync<agent>(it => it.name.contains("何/__"));

    生成 sql 如下,其中 @name__1 的值为 '何/__' ,_ 会按其 字面义 在db中匹配查询

1 select *
2 from `agent`
3 where  `name` like  @name__1 escape '/';

 

 

 

 

                                         蒙

                                    2019-02-18 14:45 周一