SQL使用空值.docVIP

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
什么是空值 空值从技术上来说就是“未知的值”。但空值并不包括零、一个或者多个空格组成的字符串、以及零长度的字符串。 从实际应用中,空值说明还没有向数据库中输入相应的数据,或者某个特定的记录行不需要使用该列。在实际的操作中有下列几种情况可使得一列成为NULL。 (1)其值未知,如课程表中不明确具体的课程内容。 (2)其值不存在,如在学生表中某个学生由于没有参加考试,所以该学生的考试成绩为空值。 (3)列对表行不可用。 检测空值 因为空值代表的是未知的值,所以并不是所有的空值都相等。例如,“student”表中有两个学生的年龄未知,但无法证明这两个学生的年龄相等。这样就不能用“=”运算符来检测空值。所以SQL引入了一个特殊的操作符IS来检测特殊值之间的等价性。 语法: WHERE Expression IS NULL 示例: 查询“grade”表中没有“课程成绩”的学生。在查询分析器中输入的SQL语句如下: use student select * from grade where 课程成绩 is null 实现的过程如图1所示。 图1 查询没有课程成绩的学生 上述程序改为用“=”运算符来查询空值,查询结果如图2所示。 图2 用“=”运算符查询空值 实现的过程如图1所示。 图1 查询没有课程成绩的学生 上述程序改为用“=”运算符来查询空值,查询结果如图2所示。 图2 用“=”运算符查询空值 从上面的例子中看出,用“=”运算符来检测空值是不成功的。 IS运算符可以与NOT配合使用以检查非空的值。 示例: 在“grade”表中,查询“课程成绩”不为空的记录。在查询分析器中输入的SQL语句如下: use student select * from grade where 课程成绩 is not null 实现的过程如图3所示。 图3 查询学生“课程成绩”不为空的记录 处理空值 在实际使用数据表的数据时,空值是很不受欢迎的。通常需要将空值转换为一个有效的值,以便对数据的理解,或者防止表达式出错。 SQL为处理空值提供了几个专门用来处理空值的函数。ISNULL(?)函数可以将空值转换为有效的值;而NULLIF(?)函数可以根据指定的条件来生成空值。 1.使用ISNULL(?)函数来处理空值 ISNULL(?)函数是用指定的值替换空值。 语法: ISNULL (check_expression , replacement_value ) 参数说明: ?????????? check_expression:将被检查是否为 NULL值的表达式。check_expression 可以是任何类型的。 ?????????? replacement_value:在check_expression为NULL值时,将用replacement_value值替换NULL值。replacement_value 必须与check_expresssion具有相同的类型。 返回类型:返回与check_expression相同的类型。 说明:如果check_expression不为NULL值,那么返回该表达式的值;否则返回replacement_value。 示例: 在“grade”表中,“课程成绩”为NULL值的,用数值“0”来替代。在查询分析器中输入的SQL语句如下: use student select 学号, 课程代号 , isnull(课程成绩,0) as 课程成绩 , 学期 from grade 实现的过程如图1所示。 图1 “课程成绩”为NULL值的用“0”替代 如果课程成绩不为空值,ISNULL(?)函数将会返回原值。只有课程成绩为NULL值时,ISNULL(?)函数将会对其进行处理,用数值0替代。 2.使用NULLIF(?)函数来处理空值 NULLIF(?)函数功能:如果一个数据表中应该使用NULL值的地方使用了其他数据,那么就可以使用NULLIF(?)函数将这些不一致的值替换为空值。 语法: NULLIF ( expression , expression ) 参数说明: expression:常量、列名、函数、子查询或算术运算符、按位运算符以及字符串运算符的任意组合。返回类型:返回类型与第一个expression相同。如果两个表达式不相等,NULLIF 返回第一个expression的值。如果相等,NULLIF 返回第一个expression类型的空值。 说明:如果两个表达式相等且结果表达式为NULL,NULLIF等价于CASE的搜索函数。 示例: 在“grade”表中,“学期”值是“1”的替换成NULL值。在查询分析器中输入的SQL语句如下:

文档评论(0)

精华文档888 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档