nvl

sql常用函数instr()和substr()

你。 提交于 2020-03-12 19:57:31
Decode decode(条件,值1,翻译值1,值2,翻译值2,...,缺省值) 该函数与程序中的 If...else if...else 意义一样 NVL 格式: NVL( string1, replace_with) 功能:如果string1为NULL,则NVL函数返回replace_with的值,否则返回string1的值,如果两个参数都为NULL ,则返回NULL。 注意事项:string1和replace_with必须为同一数据类型,除非显式的使用TO_CHAR函数进行类型转换。 select nvl(sum(t.dwxhl),1) from tb_jhde t 就表示如果sum(t.dwxhl) = NULL 就返回 1 Oracle 在NVL函数的功能上扩展,提供了NVL2函数 NVL2 nvl2 (E1, E2, E3) 的功能为:如果E1为NULL,则函数返回E3,否则返回E2 结合 Decode 和 NVL等函数 常常结合使用,例如 select monthid,decode(nvl(sale,6000),6000,'NG','OK') from output sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1, 如果取较小值就是 select monthid,decode(sign(sale-6000),-1,sale,6000) from

Oracle常用函数

China☆狼群 提交于 2020-03-10 18:10:46
1.NVL(eExpression1, eExpression2) 函数: 参数: eExpression1, eExpression2 如 果 eExpression1 的计算结果为 null 值,则 NVL( ) 返回 eExpression2。如果 eExpression1 的计算结果不是 null 值,则返回 eExpression1。eExpression1 和 eExpression2 可以是任意一种数据类型。如果 eExpression1 与 eExpression2 的结果皆为 null 值,则 NVL( ) 返回 .NULL.。 返回值类型 :字符型、日期型、日期时间型、数值型、货币型、逻辑型或 null 值 说明: 在不支持 null 值或 null 值无关紧要的情况下,可以使用 NVL( ) 来移去计算或操作中的 null 值。 select nvl(a.name,'空得') as name from student a join school b on a.ID=b.ID 注意:两个参数得类型要匹配 问:什么是NULL? 答:在我们不知道具体有什么数据的时候,也即未知,可以用NULL, 我们称它为空,ORACLE中,含有空值的表列长度为零。 ORACLE允许任何一种数据类型的字段为空,除了以下两种情况: 1、主键字段(primary key), 2

oracle中nvl()函数

天大地大妈咪最大 提交于 2020-03-10 18:06:52
NVL是Oracle PL/SQL中的一个函数。它的格式是NVL( string1, replace_with)。 它的功能是如果string1为NULL,则NVL函数返回replace_with的值,否则返回string1的值,如果两个参数都为NULL ,则返回NULL。 pandas和SQL数据分析实战 https://study.163.com/course/courseMain.htm?courseId=1006383008&share=2&shareId=400000000398149 来源: https://www.cnblogs.com/webRobot/p/11307040.html

SQL中NVL函数

二次信任 提交于 2020-03-10 18:04:51
空值判断函数 1、NVL(表达式A,表达式B) 如果表达式A为空值,NVL返回值为表达式B的值,否则返回表达式A的值。该函数的目的是把一个空值(null)转换成一个实际的值。其表达式的值可以是数字型、字符型和日期型。但是表达式A和表达式B的数据类型必须为同一个类型。 例: nvl(clue_num,0):如果clue_num为空,则返回0;否则返回clue_num的值 2、NVL2(表达式A,表达式B,表达式C) 如果表达式A为空,则返回表达式C的值;如果表达式A不为空,则返回表达式B的值。 例: nvl(sex,0,1):如果sex为空,则返回1;否则返回0 来源: https://www.cnblogs.com/as-zhlan/p/10717853.html

NVL函数

戏子无情 提交于 2020-03-10 18:04:16
1.NVL函数 从两个表达式返回一个非 null 值。 语法 NVL(eExpression1, eExpression2) 参数 eExpression1, eExpression2 如果 eExpression1 的计算结果为 null 值,则 NVL( ) 返回 eExpression2。如果 eExpression1 的计算结果不是 null 值,则返回 eExpression1。eExpression1 和 eExpression2 可以是任意一种数据类型。如果 eExpression1 与 eExpression2 的结果皆为 null 值,则 NVL( ) 返回 .NULL.。 返回值类型 字符型、日期型、日期时间型、数值型、货币型、逻辑型或 null 值 2.NVL2函数 语法 NVL(eExpression0, eExpression1,eExpression2) 参数 eExpression0,eExpression1, eExpression2 如果 eExpression0 的计算结果为 null 值,则 NVL( ) 返回 eExpression2。如果 eExpression0 的计算结果不是 null 值,则返回 eExpression1。eExpression1和eExpression2类型不同的话

oracle中的nvl(), nvl2()函数

倖福魔咒の 提交于 2020-03-10 18:03:20
nvl()函数是oracle/plpgsql中的一个函数,格式为:nvl(string1, replace_with) 功能:如果string1 位null,那么nvl()函数返回replace_with的值,否则返回sting1的值。 注意:sting1和replace_with必须是同一数据类型,除非显示的适用to_char函数。 例子: nvl(to_char(some_numeric),’some string’) --其中some_numeric指某个数据类型的值。 例如: nvl(yan,0)>0 nvl(yan,0) 的意思是如果yan是null, 则取0值。 通过查询获得某个字段的合计值,如果这个值为null,则给出一个预设的 默认值(此处为0,也可以设置为其他值)。 例如: select nvl(sum(t.dwx),1) from tb t ; 就表示如果sum(t.dwx) = null就返回1。 还有另一种有关的有用的方法: Declare i integer Select nvl(sum(t.dwx),1) into i from tb t where zx = -1; 以上把获得的合计值存储到变量i中,如果查询的值为Null就把它的值设置为1。 其他用法举例如下: select nvl(rulescore,0) from zwjc_graderule

Oracle中NVL函数的用法详解

限于喜欢 提交于 2020-02-12 20:45:39
NVL函数可以用在 判断列值是否为空 的情况。 1. 如果列值不为空,则返回列值本身的值 2. 如果列值为空,则返回该函数中第二个参数的值 函数语法:NVL(参数1,参数2) 举个简单的例子: 列出emp表中comm列值不为空的员工姓名,SQL实现如下: select ename from emp where nvl(comm,0)>0; 首先,我们通过以下sql先看一下nvl函数的返回值情况: select ename,nvl(comm,0) from emp; 通过上面实例,可以看出为空的comm列值返回值为0 所以我们可以通过返回值大于0的条件来取出comm不为空的员工。 当然了,不为空的条件也可以用 is not null 来实现: select ename from emp where comm is not null; 来源: CSDN 作者: 我是一名程序猿 链接: https://blog.csdn.net/baidu_35901646/article/details/104283515

Oracle中获取连续的序列号范围的SQL (二)

与世无争的帅哥 提交于 2020-01-31 01:20:36
方案3的思路比较值得学习,我们将层层剖析它的结构: 1:对每一条记录找它的前一行 所谓连续的序列号就是看相同格式的情况下前一行记录与当前行的记录序号的值是否相差为1: 如果相差为1,则说明两个序列号是连续的; 如果不为1,则两个序列号不是连续的 select numFormat, lag(code, 1) over(partition by numFormat order by code) previousCode, code, max(code) over(partition by numFormat) maxn from inventory; 2:过滤掉中间连续序列号。 这里通过比较当前序列号与前一行的序列号相减是非相差为1,相差为1将被过滤掉;相差不为1比如2或者说有null值则不被过滤。 select * from( select numFormat, lag(code, 1) over(partition by numFormat order by code) previousCode, code, max(code) over(partition by numFormat) maxn from inventory ) where nvl(code-previousCode-1,1) <> 0 ; 3:把当前行的code列作为 startNum

hive count distinct count(distinct Columns) Columns为多列时慎用,有坑!!!

﹥>﹥吖頭↗ 提交于 2020-01-30 15:56:01
1,问题 表中实际无重复数据,但是经过count(distinct imei,wifi,ssid),数据量变少了。 2,原因 distinct 多列时任意列为null值,均返回null,hive的count()函数对空值是不做处理的,所以数据减少 3,验证 4,解决办法 4.1,将distinct后列用小括号括起来(所有列均为null时仍然不计数) count(distinct (x,y,z)) 4.2,将distinct后存在null值的列用nvl处理(要清楚知道可能存在null的列,nvl处理后结果尽量设置成不同的值,否则会有误差) count(distinct x,nvl(y,0),z) count(distinct x,nvl(y,0),nvl(z,1)) 来源: CSDN 作者: 木给哇啦丶 链接: https://blog.csdn.net/lquarius/article/details/104114359

HIVE-常用函数

大城市里の小女人 提交于 2020-01-26 03:17:06
空值赋值 nvl函数 nvl(列名1, replace_with): 如果列名1为空值, 则replace_with的内容代替,此处可以为一个固定的值, 也可以是别的列名。 select nvl ( name1 , name2 ) from table_name 或 select nvl ( name1 , 'zhangsan' ) from table_name 如果name1 为 NULL , 则只用name2替代,如果name2还是 NULL , 则就是空; # hive不支持这样写, 只能写2个 select nvl ( name1 , name2,name3 ) from table_name 时间函数 时间格式化 select date_format ( '2019-12-29' , 'yyyy-MM' ) date_format是只接受yyyy - MM - dd 格式的日期 时间相加减 select date_add ( '2019-12-29' , 1 ) select date_add ( '2019-12-29' , - 1 ) select date_sub ( '2019-12-29' , 1 ) select date_sub ( '2019-12-29' , - 1 ) select datediff ( '2019-12-29' , '2019-12