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

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

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

  r" z: b6 C  _% W+ i* I$ cSELECT customer_id,first_name,last_name,dob
# b$ }$ z$ U, o7 q. S
FROM customers* c: v5 D# K7 O0 j* v( s
WHERE dob IS NULL;
$ n5 n  {3 W; _' B, U5 s 1-13112G35322411.jpg ( R0 d$ a  u5 E2 }! ?

' _& e8 x: B  N3 c; [7 V$ [( A# j+ @  t在下面这个例子中,使用的条件是“phone列为空”可以查询出顾客#5的记录:
! \( Z  {1 k0 B0 y
/ @5 S4 R6 S9 w# ], ySELECT customer_id,first_name,last_name,dob
- B& C1 @  ?  Z+ [! M
FROM customers
6 j8 F' X! p$ ^$ \6 DWHERE phone IS NULL;
; S: o1 {/ e" _$ u4 O 1-13112G3533W64.jpg # S5 D+ e7 p; y6 a& X
既然空值不会显示任何内容,那么在检索所有行时又如何区分空值和空字符串呢?答案是使用Oracle内置的一个函数NVL()。NVL()函数可以将空值转换成另外一个可以真正理解的值,NVL()函数可以接受两个参数:列(或者更确切的说是可以返回一个值的任意表达式)和一个值,如果第一个参数是空值,就将其替换成第二个参数的值,下面举例进行说明,NVL()函数将phone列的一个空值转换为字符串“Unknown phone number”) f3 j, `& F( k) }! E% x
' _; E5 X0 M- i3 d( Y8 |
SELECT customer_id,first_name,last_name,dob
+ W. g# {$ \/ ~NVL(phone,'Unknown phone number') AS PHONE_NUMBER3 G1 g( Q, Q' u; b( T4 V5 l
FROM customers;
: _8 R% A# H$ E$ |4 L7 z8 p 1-13112G354464F.jpg 3 T2 R% P/ Z$ q) R# u7 M
NVL()函数除了用于转换包含空值的字符串列之外,还可以用于转换数字列和日期列。
( G3 ]2 w5 I9 z" T2 _' `+ r) j

全部评论 0

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