NVL()函数的用法及注意事项(亲身感悟)

2024-03-04 02:48

本文主要是介绍NVL()函数的用法及注意事项(亲身感悟),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 一、函数介绍
      • 1.NVL函数是一个空值转换函数。
      • 2.两种用法
      • 3.一种功能
    • 二、注意事项(亲身感悟)

一、函数介绍

1.NVL函数是一个空值转换函数。

该函数的目的是把一个空值(null)转换成一个实际的值。

2.两种用法

用法一
(1)格式:NVL(表达式1,表达式2)
(2)功能:如果表达式1为空值,NVL返回值为表达式2的值,否则返回表达式1的值。
(3) 注意:其表达式的值可以是数字型、字符型和日期型。但是表达式1和表达式2的数据类型必须为同一个类型。

对数字型: NVL(comm,0);对字符型 NVL( TO_CHAR(comm), 'No Commission')对日期型 NVL(hiredate,' 31-DEC-99')
其中comm为你需要判断是否为空的列名

用法二
(1)格式:NVL2(表达式1,表达式2,表达式3)
(2)功能:如果表达式1为空,返回值为表达式3的值。如果表达式1不为空,返回值为表达式2的值。
(3)样例:

 NVL2(comm,'sal+comm',sal)
如果comm为空,就返回sal 的值。如果 comm 不为空(null),就返回表达式 sal+comm的值。 

3.一种功能

自己总结了一下NVL()函数的功能,方便记忆:第一个表达式的值如果为空,就返回最后一个表达式的值。

二、注意事项(亲身感悟)

做毕设时判断用户的性别,是否为空(null),如果为空将其替换为unknow。尝试多次,显示的结果都是不为空。但我的性别字段里明明有null值。如图显示。
在这里插入图片描述

  • 我的查询语句:
 val result1 = sqlContext.sql("select userid,usertype,bikeid," +"NVL(gender,'unknow') as gender,birthyear " +"from user_condition ").show()

查询结果仍和上图一样。

  • 后来我用用isnan()函数,和if语句判断性别字段是否为空,如果为空返回y。结果还是和nvl()函数效果那样,显示不为空。
  • 查询语句
sqlContext.sql("select userid,usertype,bikeid,if(isnan(gender),'y','n')as genderIsNull,birthyear " +"from user_condition limit 10 ").show()

结果如图:
在这里插入图片描述

  • 最后经过多次上网查寻,以为空值是NULL或者是空格。反复修改代码,进行测试,查看显示结果。第二天大脑终于开窍。只有待替换的整列值都为空(null), 才能替换成自己想要的结果值。而我的性别字段有的值为null、有的值为Male、有的值为Female,所以用NVL()函数,没有效果。

这篇关于NVL()函数的用法及注意事项(亲身感悟)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/771776

相关文章

JDK21对虚拟线程的几种用法实践指南

《JDK21对虚拟线程的几种用法实践指南》虚拟线程是Java中的一种轻量级线程,由JVM管理,特别适合于I/O密集型任务,:本文主要介绍JDK21对虚拟线程的几种用法,文中通过代码介绍的非常详细,... 目录一、参考官方文档二、什么是虚拟线程三、几种用法1、Thread.ofVirtual().start(

Python函数作用域与闭包举例深度解析

《Python函数作用域与闭包举例深度解析》Python函数的作用域规则和闭包是编程中的关键概念,它们决定了变量的访问和生命周期,:本文主要介绍Python函数作用域与闭包的相关资料,文中通过代码... 目录1. 基础作用域访问示例1:访问全局变量示例2:访问外层函数变量2. 闭包基础示例3:简单闭包示例4

Java8 Collectors.toMap() 的两种用法

《Java8Collectors.toMap()的两种用法》Collectors.toMap():JDK8中提供,用于将Stream流转换为Map,本文给大家介绍Java8Collector... 目录一、简单介绍用法1:根据某一属性,对对象的实例或属性做映射用法2:根据某一属性,对对象集合进行去重二、Du

Python中isinstance()函数原理解释及详细用法示例

《Python中isinstance()函数原理解释及详细用法示例》isinstance()是Python内置的一个非常有用的函数,用于检查一个对象是否属于指定的类型或类型元组中的某一个类型,它是Py... 目录python中isinstance()函数原理解释及详细用法指南一、isinstance()函数

python中的高阶函数示例详解

《python中的高阶函数示例详解》在Python中,高阶函数是指接受函数作为参数或返回函数作为结果的函数,下面:本文主要介绍python中高阶函数的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录1.定义2.map函数3.filter函数4.reduce函数5.sorted函数6.自定义高阶函数

Python中的sort方法、sorted函数与lambda表达式及用法详解

《Python中的sort方法、sorted函数与lambda表达式及用法详解》文章对比了Python中list.sort()与sorted()函数的区别,指出sort()原地排序返回None,sor... 目录1. sort()方法1.1 sort()方法1.2 基本语法和参数A. reverse参数B.

vue监听属性watch的用法及使用场景详解

《vue监听属性watch的用法及使用场景详解》watch是vue中常用的监听器,它主要用于侦听数据的变化,在数据发生变化的时候执行一些操作,:本文主要介绍vue监听属性watch的用法及使用场景... 目录1. 监听属性 watch2. 常规用法3. 监听对象和route变化4. 使用场景附Watch 的

Java Instrumentation从概念到基本用法详解

《JavaInstrumentation从概念到基本用法详解》JavaInstrumentation是java.lang.instrument包提供的API,允许开发者在类被JVM加载时对其进行修改... 目录一、什么是 Java Instrumentation主要用途二、核心概念1. Java Agent

Java 中 Optional 的用法及最佳实践

《Java中Optional的用法及最佳实践》在Java开发中,空指针异常(NullPointerException)是开发者最常遇到的问题之一,本篇文章将详细讲解Optional的用法、常用方... 目录前言1. 什么是 Optional?主要特性:2. Optional 的基本用法2.1 创建 Opti

如何正确识别一台POE交换机的好坏? 选购可靠的POE交换机注意事项

《如何正确识别一台POE交换机的好坏?选购可靠的POE交换机注意事项》POE技术已经历多年发展,广泛应用于安防监控和无线覆盖等领域,需求量大,但质量参差不齐,市场上POE交换机的品牌繁多,如何正确识... 目录生产标识1. 必须包含的信息2. 劣质设备的常见问题供电标准1. 正规的 POE 标准2. 劣质设