当前位置: 移动技术网 > IT编程>开发语言>.net > MyDAL - like && not like 条件 使用

MyDAL - like && not like 条件 使用

2019年02月19日  | 移动技术网IT编程  | 我要评论

xsbook,吕四中学蔡蓉蓉,具敏智

索引:

一.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 周一

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网