MyDAL - like && not like 條件 使用

索引:html

目錄索引es6

一.API 列表es5

  C# 代碼中 String.Contains("conditionStr") 生成 SQL 對應的 like '%conditionStr%'spa

     如:.Queryer<Agent>()code

      ... ...htm

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

      ... ... 用於 單表 like 條件索引

      .Queryer(out Agent agent1, out AgentInventoryRecord record1)get

      ... ...string

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

    以 MySQL 爲例,生成 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(""));

    以 MySQL 爲例,生成 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                 .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 = await Conn
2                 .Queryer<Agent>()
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 = 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>();

    以 MySQL 爲例,生成 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>();

    以 MySQL 爲例,生成 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>();

    以 MySQL 爲例,生成 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>();

    以 MySQL 爲例,生成 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>();

    以 MySQL 爲例,生成 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>();

    以 MySQL 爲例,生成 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("陳%"));

    以 MySQL 爲例,生成 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("王_"));

    以 MySQL 爲例,生成 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();

    以 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<Agent>(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 週六

相關文章
相關標籤/搜索