Oracle数据库中如何表示未知的值呢?-站长杂谈下载

Oracle数据库中如何表示未知的值呢?

来自版块: 站长杂谈发表于: 2017-4-6 11:14:40
47415
0
如本资源下载地址失效,请点击此处进行反馈
开通本站Svip会员,全站资源免费下
数据中如何表示未知的值呢?答案是使用一个特殊的值,我们称之为空值(null)。空值并不是一个空字符串,而是一个特殊的值。空值就表示该列的值未知。当选择一个包含空值的列时,看到的结果是该列中不包含任何内容。在前面从customers表中查询行时,就已经看到了这一点(或者说根本看不到内容):顾客#4的dob列是空值,顾客#5的phone列也是空值。
: x3 e  u% u/ h! y2 M在SELECT语句中,也可以使用IS NULL来检查空值。下面的例子就以“dob列为空”可以检索顾客#4的记录:' L2 I) m# k' ^. K) p% N

4 _, ~$ @9 U3 H0 SSELECT customer_id,first_name,last_name,dob
+ t. q' x; K  q# }7 t0 y1 J
FROM customers
/ D* g+ n3 M- N  C5 H7 ]WHERE dob IS NULL;& r& f7 N' p0 t4 W
1-13112G35322411.jpg - q6 u. }  g6 L- Z9 e
* z# G6 R* ~, T# Y- s# \
在下面这个例子中,使用的条件是“phone列为空”可以查询出顾客#5的记录:
1 _7 B7 M) o/ }3 O; a) N8 o* d5 g  v' l, r5 ?1 V0 I& i5 h5 e! t: p- Q8 f
SELECT customer_id,first_name,last_name,dob
! `9 f  c' L! h) x) H, P4 a- }
FROM customers
# @& t" V" j( }1 }- [' eWHERE phone IS NULL;9 ?( n' v: Q/ @' h" k
1-13112G3533W64.jpg 3 F  y  N! h7 g" J6 R) O% y
既然空值不会显示任何内容,那么在检索所有行时又如何区分空值和空字符串呢?答案是使用Oracle内置的一个函数NVL()。NVL()函数可以将空值转换成另外一个可以真正理解的值,NVL()函数可以接受两个参数:列(或者更确切的说是可以返回一个值的任意表达式)和一个值,如果第一个参数是空值,就将其替换成第二个参数的值,下面举例进行说明,NVL()函数将phone列的一个空值转换为字符串“Unknown phone number”+ p3 y, k+ n3 x( Y) U
# P$ i4 W/ n& |( g; d# I. r
SELECT customer_id,first_name,last_name,dob
6 Z2 w5 V  O+ q2 XNVL(phone,'Unknown phone number') AS PHONE_NUMBER7 e) S3 g* A& T3 N& c6 [3 |
FROM customers;
+ K# D3 v; T7 k; ^$ ?1 A 1-13112G354464F.jpg
4 ~! w# V$ x1 ]  _0 K( f' Y5 ONVL()函数除了用于转换包含空值的字符串列之外,还可以用于转换数字列和日期列。
9 f% ?9 Y3 o' P4 i4 c+ g+ I3 j9 e' J3 |( A# h  m7 ?

全部评论 0

您需要登录后才可以回帖 立即登录
登录
0
0
0
返回顶部