VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 数据库 > MongoDB >
  • SQL Server 2008教程之高级数据过滤【数据过滤则是

第一节   高级数据过滤【数据过滤则是数据检索中最核心的部分
1、  通配符过滤【包括单字符匹配,多字符匹配,集合匹配,单字符匹配和多字符匹配还可以一起使用】。
SQL语句:SELECT  LIKE用法详解】  %_、[ ]、[^]、*、?、#、[!]
LIKE语句的语法格式是:select * from 表名 where 字段名 like 对应值(子串),它主要是针对字符型字段的,它的作用是在一个字符型字段列中检索包含对应子串的。
1:% 包含零个或多个字符的任意字符串
<1>LIKE'Mc%' 将搜索以字母 Mc 开头的所有字符串(如 McBadden)。
<2>LIKE'%inger' 将搜索以字母 inger 结尾的所有字符串(如 Ringer、Stringer)。
<3>LIKE'%en%' 将搜索在任何位置包含字母 en 的所有字符串(如 Bennet、Green、McBadden)。
2:_(下划线) 任何单个字符
LIKE'_heryl' 将搜索以字母 heryl 结尾的所有六个字母的名称(如 Cheryl、Sheryl)。
3:[ ] 指定范围 ([a-f]) 或集合 ([abcdef]) 中的任何单个字符
<1>LIKE'[CK]ars[eo]n' 将搜索下列字符串:Carsen、Karsen、Carson 和 Karson(如 Carson)。
<2>LIKE'[M-Z]inger' 将搜索以字符串inger结尾,以从 M 到 Z 的任何单个字母开头的所有名称
(如 Ringer)。
4:[^] 不属于指定范围 ([a-f]) 或集合 ([abcdef]) 任何单个字符
LIKE'M[^c]%' 将搜索以字母 M 开头,并且第二个字母不是 c 的所有名称(如MacFeather)。
5:* 它同于DOS命令中的通配符,代表多个字符c*c代表cc,cBc,cbc,cabdfec等多个字符。
6:?同于DOS命令中的?通配符,代表单个字符b?b代表brb,bFb等
7:# 大致同上,不同的是代只能代表单个数字k#k代表k1k,k8k,k0k 。
8:[!] 排除 它只代表单个字符
下面来举例说明一下:
  例1,查询name字段中包含有“明”字的。【select * from table1 where name like '%明%'】
  例2,查询name字段中以“李”字开头。 【select * from table1 where name like '李*'】
  例3,查询name字段中含有数字的。   【select * from table1 where name like '%[0-9]%'】 
  例4,查询name字段中含有小写字母的。【select * from table1 where name like '%[a-z]%'】
  例5,查询name字段中不含有数字的。 【select * from table1 where name like '%[!0-9]%'】
  以上例子能列出什么值来显而易见。但在这里,我们着重要说明的是通配符“*”与“%”的区别。
  很多人会问,为什么我在以上查询时有个别的表示所有字符的时候用"%"而不用“*”?先看看下面的例子能分别出现什么结果:
  select * from table1 where name like '*明*'
  select * from table1 where name like '%明%'
  大家会看到,前一条语句列出来的是所有的记录,而后一条记录列出来的是name字段中含有“明”的记录,所以说,当我们作字符型字段包含一个子串的查询时最好采用“%”而不用“*”,用“*”的时候只在开头或者只在结尾时,而不能两端全由“*”代替任意字符的情况下。
2、    空值检测【IS NULL、IS NOT NULL】
Ø  在SQL语句中对空值的处理有些特别,不能使用普通的等于运算符进行判断,而要使用IS NULL关键字,使用方法为【待检测字段名IS NULL】;如果要检测“字段不为空”,则要使用IS NOT NULL,使用方法为【待检测字段名IS NOT NULL】。IS NULL/IS NOT NULL可以和其他的过滤条件一起使用。
3、    反义运算符【=><>=<=!=<>not xxx=yyynot(xxx=yyy)
Ø  =<>等运算符都是用来进行数值判断的,有的时候则会想使用这些运算符的反义,也就是!=”表示“不等于”、“!<”表示“不小于”,而“!>”表示“不大于”。
Ø  使用“!”运算符的方式由于只能运行在MSSQLServer和DB2两种数据库系统上,如果在其他数据库系统上则可以用其他的变通的方式实现,最常用的变通实现方式有两种:使用同义运算符、使用NOT运算符。这样“不等于”、“不大于”和“不小于”就分别可以表示成<>”、“<=”和“>=
Ø  NOT运算符用来将一个表达式的值取反,也就是将值为“真”的表达式结果变为“假”, 值为“假”的表达式结果变为“真”,使用方式也非常简单【NOT (表达式)】:如:NOT(FAge=22) 。而且能够实现复杂的嵌套。
4、    多值检测 ORIN
Ø  我们可以使用OR语句来连接多个等于判断,但是为了解决进行多个离散值的匹配问题,SQL提供了IN语句,使用IN我们只要指定要匹配的数据集合就可以了,使用方法为【IN (值1,值2,值3……)】。
Ø  使用IN我们还可以让字段与其他表中的值进行匹配,要实现这样的功能就需要IN来搭配子查询来使用,关于这一点我们将在后面的章节介绍。
5、    范围值检测 BETTWEEN  ANDNOT BETTWEEN  AND
Ø  SQL提供了一个专门用于范围值检测的语句“BETTWEEN AND”,它可以用来检测一个值是否处于某个范围中(包括范围的边界值,也就是闭区间),如果需要进行开区间或者半开半闭区间的范围值检测的话就必须使用其他的解决方案了。使用方法:【字段名 BETTWEEN 左范围值AND 右范围值】,其等价于【字段名>=左范围值 AND 字段名<=右范围值】。使用“BETTWEEN AND”我们还能够进行多个不连续范围值的检测。如:SELECT *     FROM  T_Employee WHERE
(Fsalary  BETWEEN  2000  AND  3000) OR (FSalary  BETWEEN  5000  AND  8000)
6、    低效的“WHERE 1=1”【适用动态组装的SQL,如果数据检索对性能有比较高的要求不建议使用

相关教程