数据库组件 Hxj.Data (十二) (模糊查询、简单的in,not in查询)
2010-01-26 17:32
603 查看
条件的生成都是通过对表中字段进行的。
比如:
这些是简单的比较。
下面来介绍通过like 模糊查询该怎么做。
先上代码,
这句等效sql就是(sqlserver) productname like ‘%apple%'
就是完全模糊搜索。
这句等效sql就是(sqlserver) productname like ‘apple%',属于左匹配,查找productname列中所有以apple开头的。
这句等效sql就是(sqlserver) productname like ‘%apple',属于右匹配,查找productname列中所有以apple结尾的。
再来看看 in 查询
categoryid in (1,2,3) 类似该怎么处理呢?
看下面的例子:
就是这么处理的。
生成的sql:
是不是符合要求了啊。
如果知道Products._.CategoryID类型,当然这里是int
那推荐的写法是:
这样可减少一次装箱操作。
最终生成的sql也是一样的。
not in 的方法是SelectNotIn
操作是一样的。
如下:
生成的sql
[/code]
这样查询是不是变的简单了啊。
下一节将讲述子查询。
比如:
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
[code]Text: SELECT * FROM [Products] WHERE [Products].[CategoryID] NOT IN (@a154584666f34bfaaa16bf8ede39774f,@7d3231666b19496f925a09b13d3541d0,@184523c709334fb299a736f4c402a163) Parameters: @a154584666f34bfaaa16bf8ede39774f[Int32] = 1 @7d3231666b19496f925a09b13d3541d0[Int32] = 2 @184523c709334fb299a736f4c402a163[Int32] = 3
[/code]
这样查询是不是变的简单了啊。
下一节将讲述子查询。
相关文章推荐
- 数据库组件 Hxj.Data (十二) (模糊查询、简单的in,not in查询)
- 数据库组件 Hxj.Data (十三) (子查询)
- 数据库组件 Hxj.Data (三)(查询操作篇)
- 数据库组件 Hxj.Data (十五) (查询的排序、分组)
- 数据库组件 Hxj.Data (三)(查询操作篇)
- 数据库组件 Hxj.Data (十六) (查询的字段)
- 数据库组件 Hxj.Data (二十八)(事务中的查询,查询字段字中的子查询,WhereClip的隐式转换)
- 数据库组件 Hxj.Data (二十八)(事务中的查询,查询字段字中的子查询,WhereClip的隐式转换)
- 数据库组件 Hxj.Data (十五) (查询的排序、分组)
- 数据库组件 Hxj.Data (十六) (查询的字段)
- 数据库组件 Hxj.Data (十三) (子查询)
- 数据库组件 Hxj.Data (四)(添加操作篇)
- 07--MySQL自学教程:DQL(Data Query Language:数据库查询语言)简介、基础查询、条件查询、模糊查询以及排序(一)
- 数据库组件 Hxj.Data (三十一)(MySQL篇)
- 数据库组件 Hxj.Data (三十一)(MySQL篇)
- 数据库组件 Hxj.Data (二十五)(数据库连接配置 - connectionStrings节点)
- 数据库组件 Hxj.Data (八)(存储过程篇)
- 数据库组件 Hxj.Data (十) (输出组件执行的sql)
- 数据库组件 Hxj.Data (二十一) (ToScalar<TResult>)
- 数据库组件 Hxj.Data (十) (输出组件执行的sql)