2020-04-14

本文深入探讨了数据库中空值的处理方法,包括使用NVL和COALESCE函数将空值转换为有意义的值,以及如何在函数调用中正确处理空值。通过实例展示了NVL和COALESCE函数的用法,解释了它们在处理多个参数时的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

空值相关笔记

查找空值:查找空值不能用运算符’=’,而要用is null 或者is not null

空值与运算:null不支持加减乘除,大小比较,相等比较,否则返回为空。所以当要进行运算的时候需要把空值改为有意义的值。
Nvl只能处理单个参数,coalesce可以处理多行参数
1、nvl()函数的格式如下:NVL(expr1,expr2);
例子:select name,NVL(name,-1) from user;运行后,结果返回两列数值,若name为空,则返回-1,若name不为空值,则返回其自身。

2.COALESCE()函数 定义:返回列表中第一个非null表达式的值。如果所有表达式求值为null,则返回null
COALESCE()函数有两种用法: 1.COALESCE ( expression1, expression2 ); 2.COALESCE ( expression1, expression2, … expression-n );
其中第一种就相当于Oracle中的nvl或者mysql中的ifnull,写成表达式的形式为:
CASE WHEN expression1 IS NOT NULL THEN expression1 ELSE expression2 END; 第二种可以包含n个表达式,表示如果第一个不为空取第一个,否则判断下一个,以此类推,如果全部为空,则返回null值。 需注意:vertica中空字符串跟null值不一样

空值与函数:函数对于空值的处理方式不一样,有些返回空,如greatest()
GREATEST(expr_1, expr_2, …expr_n)函数从表达式(列、常量、计算值)expr_1, expr_2, … expr_n等中找出最大的数返回。在比较时,OracIe会自动按表达式的数据类型进行比较,以expr_1的数据类型为准。

有些返回期望值,如replace()
REPLACE(String,from_str,to_str) 即:将String中所有出现的from_str替换为to_str。

而在decoe()可以比较控制。
decode(字段|表达式,条件1,结果1,条件2,结果2,…,条件n,结果n,缺省值);
–缺省值可以省略 表示如果 字段|表达式 等于 条件1 时,DECODE函数的结果返回 条件1 ,…,如果不等于任何一个条件值,则返回缺省值。【注意】:decode 函数 ,只能在select 语句用。

将数据集进行分割,例如取2023年8月1日为分界点,使用这之前的数据,构建模型预测8月1日-8月7日某个区域每小时犯罪发生情况,可以开展哪些特征工程,请生成用于模型训练与验证的数据集 data = pd.read_csv('/kaggle/input/crime-data-from-2020-to-present/Crime_Data_from_2020_to_Present (1).csv') DR_NO Date Rptd DATE OCC TIME OCC AREA AREA NAME \ 0 10304468 2020-01-08 2020-01-08 2230 3 Southwest 1 190101086 2020-01-02 2020-01-01 330 1 Central 2 200110444 2020-04-14 2020-02-13 1200 1 Central 3 191501505 2020-01-01 2020-01-01 1730 15 N Hollywood 4 191921269 2020-01-01 2020-01-01 415 19 Mission ... ... ... ... ... ... ... 815877 231604807 2023-01-27 2023-01-26 1800 16 Foothill 815878 231606525 2023-03-22 2023-03-22 1000 16 Foothill 815879 231210064 2023-04-12 2023-04-12 1630 12 77th Street 815880 230115220 2023-07-02 2023-07-01 1 1 Central 815881 230906458 2023-03-05 2023-03-05 900 9 Van Nuys Rpt Dist No Part 1-2 Crm Cd \ 0 377 2 624 1 163 2 624 2 155 2 845 3 1543 2 745 4 1998 2 740 ... ... ... ... 815877 1663 2 740 815878 1602 1 230 815879 1239 1 230 815880 154 1 352 815881 914 2 745 Crm Cd Desc ... Cross Street \ 0 BATTERY - SIMPLE ASSAULT ... NaN 1 BATTERY - SIMPLE ASSAULT ... NaN 2 SEX OFFENDER REGISTRANT OUT OF COMPLIANCE ... NaN 3 VANDALISM - MISDEAMEANOR ($399 OR UNDER) ... NaN 4 VANDALISM - FELONY ($400 & OVER, ALL CHURCH VA... ... NaN ... ... ... ... 815877 VANDALISM - FELONY ($400 & OVER, ALL CHURCH VA... ... NaN 815878 ASSAULT WITH DEADLY WEAPON, AGGRAVATED ASSAULT ... NaN 815879 ASSAULT WITH DEADLY WEAPON, AGGRAVATED ASSAULT ... NaN 815880 PICKPOCKET ... NaN 815881 VANDALISM - MISDEAMEANOR ($399 OR UNDER) ... NaN LAT LON Date Is Holiday Year Month Day Hour \ 0 34.0141 -118.2978 2020-01-08 0 2020 1 8 22 1 34.0459 -118.2545 2020-01-01 1 2020 1 1 3 2 34.0448 -118.2474 2020-02-13 0 2020 2 13 12 3 34.1685 -118.4019 2020-01-01 1 2020 1 1 17 4 34.2198 -118.4468 2020-01-01 1 2020 1 1 4 ... ... ... ... ... ... ... .. ... 815877 34.2466 -118.4054 2023-01-26 0 2023 1 26 18 815878 34.2790 -118.4116 2023-03-22 0 2023 3 22 10 815879 33.9841 -118.2915 2023-04-12 0 2023 4 12 16 815880 34.0467 -118.2485 2023-07-01 0 2023 7 1 0 815881 34.1951 -118.4487 2023-03-05 0 2023 3 5 9 Time Period 0 22-23 1 3-4 2 12-13 3 17-18 4 4-5 ... ... 815877 18-19 815878 10-11 815879 16-17 815880 0-1 815881 9-10 [815882 rows x 35 columns]
最新发布
06-16
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值