mysql的not like多个条件_MyDAL - like && not like 条件 使用

索引:

一.API 列表

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

如:.Queryer()

... ...

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

... ...

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

... ...

.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(it => it.Name.Contains("陈"));

以 MySQL 为例,生成 SQL 如下:

1 select *

2 from`agent`3 where `Name` like CONCAT('%',?Name_1,'%');

2. not like 条件

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

以 MySQL 为例,生成 SQL 如下:

1 select *

2 from`agent`3 where `Name` not like CONCAT('%',?Name_1,'%');

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

1. like 条件

1 var res1 = awaitConn2 .Queryer()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 .QueryPagingAsync(1, 10);

以 MySQL 为例,生成 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 = awaitConn2 .Queryer()3 .Where(it => !it.PathId.Contains("~00-d-3-1-"))4 .QueryPagingAsync(1, 10);

以 MySQL 为例,生成 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 = awaitConn2 .Queryer(out Agent agent1, outAgentInventoryRecord record1)3 .From(() =>agent1)4 .InnerJoin(() =>record1)5 .On(() => agent1.Id ==record1.AgentId)6 .Where(() => agent1.Name.Contains("陈"))7 .QueryListAsync();

以 MySQL 为例,生成 SQL 如下:

1 select record1.`*`2 from `agent` asagent13 inner join `agentinventoryrecord` asrecord14 on agent1.`Id`=record1.`AgentId`5 where agent1.`Name` like CONCAT('%',?Name_4,'%');

2. not like 条件

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

以 MySQL 为例,生成 SQL 如下:

1 select record1.`*`2 from `agent` asagent13 inner join `agentinventoryrecord` asrecord14 on agent1.`Id`=record1.`AgentId`5 where agent1.`Name` not like CONCAT('%',?Name_4,'%');

五.String.StartsWith() 举例

1. like 条件

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

以 MySQL 为例,生成 SQL 如下,其中 ?Name_4 的值会自动生成'张%'

1 select agent13.`*`2 from `agent` asagent133 inner join `agentinventoryrecord` asrecord134 on agent13.`Id`=record13.`AgentId`5 where agent13.`Name` like ?Name_4;

2. not like 条件

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

以 MySQL 为例,生成 SQL 如下,其中 ?Name_4 的值会自动生成 '张%'

1 select agent22.`*`2 from `agent` asagent223 inner join `agentinventoryrecord` asrecord224 on agent22.`Id`=record22.`AgentId`5 where agent22.`Name` not like ?Name_4;

六.String.EndsWith() 举例

1. like 条件

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

以 MySQL 为例,生成 SQL 如下,其中 ?Name_4 的值会自动生成 '%华'

1 select agent13.`*`2 from `agent` asagent133 inner join `agentinventoryrecord` asrecord134 on agent13.`Id`=record13.`AgentId`5 where agent13.`Name` like ?Name_4;

2. not like 条件

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

以 MySQL 为例,生成 SQL 如下,其中 ?Name_4 的值会自动生成'%华'

1 select agent22.`*`2 from `agent` asagent223 inner join `agentinventoryrecord` asrecord224 on agent22.`Id`=record22.`AgentId`5 where agent22.`Name` not like ?Name_4;

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

1. %

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

以 MySQL 为例,生成 SQL 如下,其中 like 的时候 会保留 原状 按自定义的 格式串 查询,?Name_1 的值为'陈%'

1 select *

2 from`agent`3 where `Name` like ?Name_1;

2. _

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

以 MySQL 为例,生成 SQL 如下,其中 like 的时候 会保留 原状 按自己定义的 格式串 查询,?Name_1 的值为'王_'

1 select *

2 from`agent`3 where `Name` like ?Name_1;

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

1. /%

1 var res7 = awaitConn2 .Queryer()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();

以 MySQL 为例,生成 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(it => it.Name.Contains("何/__"));

以 MySQL 为例,生成 SQL 如下,其中 ?Name_1 的值为 '何/__' ,_ 会按其 字面义 在DB中匹配查询

1 select *

2 from`agent`3 where `Name` like ?Name_1 escape '/';

2019-02-18 14:45 周一

2019-02-24 17:50 周日

2019-04-13 00:29 周六

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值