程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> 數據庫組件 Hxj.Data (十二) (模糊查詢、簡單的in,not in查詢)

數據庫組件 Hxj.Data (十二) (模糊查詢、簡單的in,not in查詢)

編輯:關於ASP.NET

條件的生成都是通過對表中字段進行的。

比如:

Products._.UnitPrice > 1

Products._.CategoryID == 2

這些是簡單的比較。

下面來介紹通過like 模糊查詢該怎麼做。

先上代碼,

Products._.ProductName.Contain("apple")

這句等效sql就是(sqlserver)   productname like ‘%apple%'

就是完全模糊搜索。

Products._.ProductName.BeginWith("apple")

這句等效sql就是(sqlserver)   productname like ‘apple%',屬於左匹配,查找productname列中所有以apple開頭的。

Products._.ProductName.EndWith("apple")

這句等效sql就是(sqlserver)   productname like ‘%apple',屬於右匹配,查找productname列中所有以apple結尾的。

再來看看 in 查詢

categoryid in (1,2,3) 類似該怎麼處理呢?

看下面的例子:

DbSession.Default.From<Products>()
         .Where(Products._.CategoryID.SelectIn(1, 2, 3))
         .ToList();

就是這麼處理的。

生成的sql:

Text:
SELECT * FROM [Products]
WHERE [Products].[CategoryID]
IN (@a5670053f4ae44f2a33eb5aaf54e9abf,@43f2ba0b559a45b38328b062c61f7caf,@4761cd088ce04ebf8d9670fb22417b8f)
Parameters:
@a5670053f4ae44f2a33eb5aaf54e9abf[Int32] = 1 @43f2ba0b559a45b38328b062c61f7caf[Int32] = 2  @4761cd088ce04ebf8d9670fb22417b8f[Int32] = 3 

是不是符合要求了啊。

如果知道Products._.CategoryID類型,當然這裡是int

那推薦的寫法是:

DbSession.Default.From<Products>()
         .Where(Products._.CategoryID.SelectIn<int>(1, 2, 3))
         .ToList();

這樣可減少一次裝箱操作。

最終生成的sql也是一樣的。

not in 的方法是SelectNotIn

操作是一樣的。

如下:

DbSession.Default.From<Products>()
         .Where(Products._.CategoryID.SelectNotIn<int>(1, 2, 3))
         .ToList();

生成的sql

Text:
SELECT * FROM [Products]
WHERE [Products].[CategoryID]
NOT IN
(@a154584666f34bfaaa16bf8ede39774f,@7d3231666b19496f925a09b13d3541d0,@184523c709334fb299a736f4c402a163)
Parameters:
@a154584666f34bfaaa16bf8ede39774f[Int32] = 1 @7d3231666b19496f925a09b13d3541d0[Int32] = 2  @184523c709334fb299a736f4c402a163[Int32] = 3 

這樣查詢是不是變的簡單了啊。

下一節將講述子查詢。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved