VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 数据库 > SQL教程 >
  • 数据库组件 Hxj.Data (十二) (模糊查询、简单的in,not in查询)

条件的生成都是通过对表中字段进行的。

比如:

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 

这样查询是不是变的简单了啊。

 

下一节将讲述子查询。

 

 


作者:steven hu
出处:http://www.cnblogs.com/huxj


相关教程