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

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

开通本站Svip会员,全站资源免费下
数据中如何表示未知的值呢?答案是使用一个特殊的值,我们称之为空值(null)。空值并不是一个空字符串,而是一个特殊的值。空值就表示该列的值未知。当选择一个包含空值的列时,看到的结果是该列中不包含任何内容。在前面从customers表中查询行时,就已经看到了这一点(或者说根本看不到内容):顾客#4的dob列是空值,顾客#5的phone列也是空值。8 J! K, E( d$ l1 ^6 H# x. r8 s
在SELECT语句中,也可以使用IS NULL来检查空值。下面的例子就以“dob列为空”可以检索顾客#4的记录:
) e- l# Y5 X7 l0 Q. I' h
0 J0 d! O/ O# PSELECT customer_id,first_name,last_name,dob
0 R, }1 M3 h) m5 [; `3 |
FROM customers( x2 f; @) \- G" `
WHERE dob IS NULL;
' n+ T' m; C& d/ F- H' r8 A8 z0 r 1-13112G35322411.jpg # r# t/ z3 o( w5 w* y0 Q0 `
. L/ h1 y- s! @+ Q
在下面这个例子中,使用的条件是“phone列为空”可以查询出顾客#5的记录:
% M" g5 {$ K, [$ e+ ^# \! C1 v( k
SELECT customer_id,first_name,last_name,dob

' ?( U) J: K+ L: C/ s# C+ LFROM customers! Y: V/ p8 ~- V8 K5 z' k
WHERE phone IS NULL;
7 P  O0 v7 S" N( M 1-13112G3533W64.jpg 0 |' E6 \0 z; N8 H. D) p. {
既然空值不会显示任何内容,那么在检索所有行时又如何区分空值和空字符串呢?答案是使用Oracle内置的一个函数NVL()。NVL()函数可以将空值转换成另外一个可以真正理解的值,NVL()函数可以接受两个参数:列(或者更确切的说是可以返回一个值的任意表达式)和一个值,如果第一个参数是空值,就将其替换成第二个参数的值,下面举例进行说明,NVL()函数将phone列的一个空值转换为字符串“Unknown phone number”, k( ~" q' m+ y3 e+ `" {

9 V% T3 ~! ?) U8 W  lSELECT customer_id,first_name,last_name,dob
* P4 _% U& U2 E: ]! @+ M8 |; yNVL(phone,'Unknown phone number') AS PHONE_NUMBER, g( U7 D0 ?6 X- o, c, x" t
FROM customers;
. P' d$ V7 Y; n' C+ z 1-13112G354464F.jpg 6 ]% q- c, {* C: t
NVL()函数除了用于转换包含空值的字符串列之外,还可以用于转换数字列和日期列。9 c. N) S7 J/ J
+ N- C1 ?9 C$ Y* L$ d/ v. k

全部评论 0

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