SQLServer复合查询条件(AND,OR,NOT)对NULL值的处理方法

NULL值影响查询条件的结果,并且结果很神秘。

在SQL的3值逻辑下,三个查询条件能够发生以下三种情况:TRUE,FALSE,NULL。唯有那个满足WHERE子句的值是TRUE的笔录才面世在结果表中。

在使用SQL语句实行询问操作时,相当多时候开垦人士恐怕顾客实际不是对数码表中的成套记录感兴趣,而只是想博得实际须要的多少记录,当时就须要对查询结果开展约束。在SQL语句中可以动用WHERE子句过滤掉不适合条件的笔录。
1.相比查询
在WHERE子句中得以选拔相比较运算符对数值、字符值等音讯进行查询。相比运算符这里总结为三类:算术比较运算符、BETWEEN…AND运算符和IN运算符。这一节将独家对对那二种相比运算符的询问方式进行介绍。最终还将介绍WHERE子句中字符串和岁月的可比艺术。
算术相比运算符
SQL语句中的算术比较运算符首要不外乎=(等于)、>=(大于等于)、<=(小于等于)、>(大于)、<(小于)、!=(不等于)、
<>(不等于)、!>(不大于)、!<(不低于)。在SELECT语句的WHERE子句中得以行使算术相比较运算符对内定列举办相比,其语法格式如下:
字段1  相比运算符 值
里头,字段1意味数据表中须求查询的字段列名,字段1前面跟的是算术比较运算符,值表示的是内定列要比较的数值。使用相比运算符再次回到的结果是二个逻辑值。若是逻辑值为TRUE,则会回去查询到的笔录,如果逻辑值为FALSE,则不会返回相应的查询结果。
介怀:在WHERE子句中比较的是数值型数据时,能够不选拔单引号;倘诺是其它门类的多少(比方,字符串、时间型等)则必需使用单引号将其引住。此外,WHERE子句中比较运算符的左边和侧面的数据类型必需是匹配的。
BETWEEN…AND运算符查询内定条件约束的笔录
BETWEEN…AND运算符可以用来询问钦命条件节制的记录。使用BETWEEN…AND运算符查询时在BETWEEN运算符和AND运算符前面都亟需给定一个值。其语法格式如下:
字段1 BETWEEN 值1  AND 值2
中间,字段1代表数据表中须求查询的字段;值1为给定数值中不大的值;值2为给定数值中非常的大的值。其最终查询的结果也满含值1和值2自身的值。
晋升:SQL中,可以动用NOT BETWEEN
AND运算符来打消部分记录。比方要询问助教消息表不惑之年龄不在30~50里边的教师职员和工人音讯,就可以通过NOT
BETWEEN AND来兑现。
IN运算符查询与列表相称的笔录
IN运算符查询用来查询与列表相配的记录。使用IN运算符,能够将满意列表中级知识分子足钦命表明式的别的二个值都询问出来。IN运算符后的属性值可以是一个,也足以有几个,多个属性值之间须求要用逗号分隔。其语法格式如下:
字段1 IN(属性值1, 属性值2, 属性值3…)
内部字段1意味数据表中要求查询的字段;属性值1, 属性值2,
属性值3独家表示须求查询的值。属性值既可以够是数字类型的也能够是字符类型的值。假诺属性值是字符类型的值,则要求采纳单引号将其引住。
字符串相比
在利用SQL语句举行相比较查询时,平时会遇上字符串比较难点。对字符串举办相比较时,常用的数据库都足以行使相比运算符对字符串进行相比较,其它,在MySQL数据库中还足以选取重要字BINA冠道Y对字符串举办二进制比较。
运用比较运算符对字符串举办相比时,比较运算符的左右两边字符值应该用单引号引住。
SELECT ‘mysql’ = ‘MySQL’
string1 比较运算符 string1 比较运算符
string2 SELECT ‘mysql’ = BINA奥迪Q5Y ‘MySQL’
图片 1
日期时间的相比
在WHERE子句中对日期值和时间进行比较时,要比较的日子和岁月必需是数据库服务器能够选取的字符串格式。举个例子,在学子音信表(T_student)中,学子的出华诞期棉被服装置为DATETIME日期类型的变量。要想在WHERE子句中对学员的出生辰期值进行相比较,能够利用单引号将该日期值引住。
2.逻辑查询
在SQL语句中逻辑运算符首要不外乎AND、OPAJERO和NOT二种。个中AND运算符用来询问同期满足多个条件的笔录,O讴歌MDX运算符用来查询三个原则中级知识分子足此中任八个规格的笔录,NOT运算符用来查询满意相反条件的笔录。
利用AND运算符查询同不时间满意多少个原则的笔录
在SQL的进行操作中,超多场合下,WHERE子句并不是只盼望满意三个规格,而是期望最终查询的结果必得同一时候满意四个尺码(七个恐怕五个以上)。那时就须求利用AND运算符。其语法格式如下:
条件1 AND 条件2
里面条件1,条件2是在WHERE子句中开展询问时索要知足的尺码。假使指望利用AND运算符在WHERE子句香港中华总商会是四个规范。能够行使上面包车型地铁语法格式。
条件1 AND 条件2  AND条件3 …
此间运用五个AND运算符来连接3个规格。八个AND运算符实行连接操作时,种种AND运算符两侧的值必得都为TRUE,也等于说这么些标准都同期被满意的情事下,结果才会被出示出来。
表达:在Microsoft SQL
Server数据库中,使用“&”符号代替AND运算符表示逻辑与运算。
接受O讴歌RDX运算符查询满意任一条件的记录 在采纳SQL实行查询操作时,某个时只是梦想查询的结果中级知识分子足四个原则中的任一条件就可以。那个时候就供给动用OCR-V运算符。使用O陆风X8运算符能够用来询问知足任一条件的记录。其语法格式如下:
条件1 OR条件2
内部条件1,条件2是在WHERE子句中张开查询时索要的尺度。那多少个条件中,只要顺应在那之中任何三个标准,则相符该条件的笔录就能够被寻觅出来。假如希望利用OENVISION运算符在WHERE子句中三回九转多少个条件。能够利用上边包车型大巴语法格式
条件1 OR条件2  OR条件3 …
此地运用多少个OWrangler运算符来连接3个规范。八个OEscort运算符实行连接操作时,两边的法则中此外四个规范化为TRUE,知足该条件的笔录就能够被展现出来。
证实:在Microsoft SQL
Server数据库中,使用“|”符号代替OSportage运算符表示逻辑与运算。
采用NOT运算符对查询条件的布尔值求反
多少时候,需求查询不知足钦点条件的记录,此时就需求运用NOT运算符。NOT运算符对查询条件的布尔值求反。
注明:在Microsoft SQL
Server数据库中,使用“~”符号代替NOT运算符表示逻辑与运算。
那3个逻辑运算符也足以放手四个SQL语句中混合使用。在这里3个逻辑运算符中,NOT的优先级最高,AND的前期级要高于OENVISION。为了便于了解,平日在混合使用这3个逻辑运算符时,能够运用括号将每一个部分括起来。
3.空值查询
在运用SQL语句实行查询操作时,还应该有一种是空值查询。在多少表中,要是叁个表的行属性中不真实任何值的时候,也正是说该表的行属性中未有此外数据记录。那么就将其名字为空值。在SQL的询问中,NULL能够用来表示空值的含义。在SQL语句中,能够使用IS
NULL也许IS NOT NULL关键字来剖断空值。
4.接纳LIKE操作符完毕模糊查询
在行使SQL语句进行查询时,平常会凌驾这么一种处境,就是不可能一心鲜明所须求查询音讯的欧洲经济共同体条件,但是这个音信又怀有有些显然的特点。比如,想学学SQL语言,希望到体育场面中找一些有关的材质,可是又不明白关于SQL语言的书皆有何,那时候日常都会在图书管理类别中输加入关贸总协定组织键字SQL,那样与SQL有关的有所书籍就都会查到了。这就是模糊查询。在SQL语言中就提供了用于模糊查询的重大字LIKE,它要求和通配符“%”和“_”协作使用。
在SQL语句中,通配符“_”表示相称单个字符。即在查询语句中,三个“_”只好表示非常三个字符。
在SQL语句中,通配符“%”表示相配0个只怕多少个字符。即一个“%”能够表示0个字符,也得以象征四个字符,也得以代表三个大概更加多的字符。
在应用SQL实行模糊查询时,有的时候数据表有个别字段中的字符值自身就隐含“%”或然是“_”那四个字符。开辟人士希望在查询时,将字符值自己就隐含“%”只怕是“_”四个字符作为该字符的一有的查询出来,那几个时间就要求选取ESCAPE关键字对其进展转义操作。使用ESCAPE关键字展开转义操作步骤如下:
(1)在急需转义的“%”
可能是“_”字符前加两个转义符,该转义符能够是叁个随机字符。
(2)在ESCAPE关键字后制订该转义符的称号。
因而那七个步骤之后,坐落于该转义符之后的特别通配符(“%”
或然是“_”字符)就能够被转义为三个习感觉常字符。
5.采用REGEXP关键字张开情势相配(regular
expression)
在MySQL数据库中,还提供了一种更灵活的情势相称方法,正是选用REGEXP关键字对字符串实行情势相配。使用REGEXP关键字对字符串举办格局匹配,只若是在被相称的字符串中蕴藏与同盟模版中相匹配的子串,就被感到是方式相配。其重临值就为TRUE。
在MySQL数据库中,使用REGEXP关键字对字符串实行形式相配时,可以利用一些格局相称修饰符对方式相称实行测量检验。
^:用来相称字符串的伊始。
$:用来相称字符串的末梢。
[]:在方括号中的任何字符都足以宽容。比方[abc]代表相当方括号中的字符a、字符b恐怕是字符c。
-:连字符用来表示字符相称的约束。例如[a-z]代表非常方括号中字符a到字符z中的任何二个字符。
+:表示用于相称的该字符在被相配的字符串中现身起码叁遍如故每每。
*:表示用于相称的该字符在被相称的字符串中出现零次依然频繁。
(卡塔尔(قطر‎:在圆括号中的内容将被看作三个完整。举例(abc卡塔尔国,表示十三分样式(abcState of Qatar的字符串是abc。
{m}:在那之中整数m表示花括号前的字符串需求现身的次数。譬喻{abc}{2}表示极其样式{abc}{2}的字符串是abcabc。
其它,REGEXP还足以对字符串实行方式相配测量检验。
SELECT ‘agf’ REGEXP ‘[a-d]+’,’banana’ REGEXP ‘(ana){2}’
图片 2

以下是SQL中AND,OHuayra,NOT的真值表。

NULL值影响查询条件的结果,并且结果很神秘。

表1 AND的真值表

以下是SQL中AND,OEvoque,NOT的真值表。

TRUE

 

FALSE

表1    AND的真值表

NULL

 

TRUE

FALSE

NULL

TRUE

TRUE

FALSE

NULL

FALSE

FALSE

FALSE

FALSE

NULL

NULL

FALSE

NULL

TRUE

 

TRUE

 

FALSE

 

NULL

 

FALSE

 

FALSE

 

FALSE

 

FALSE

表2    OEvoque的真值表

NULL

 

TRUE

FALSE

NULL

TRUE

TRUE

TRUE

TRUE

FALSE

TRUE

FALSE

NULL

NULL

TRUE

NULL

NULL

 

NULL