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

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

开通本站Svip会员,全站资源免费下
数据中如何表示未知的值呢?答案是使用一个特殊的值,我们称之为空值(null)。空值并不是一个空字符串,而是一个特殊的值。空值就表示该列的值未知。当选择一个包含空值的列时,看到的结果是该列中不包含任何内容。在前面从customers表中查询行时,就已经看到了这一点(或者说根本看不到内容):顾客#4的dob列是空值,顾客#5的phone列也是空值。; t3 ^& u4 Z8 U; X
在SELECT语句中,也可以使用IS NULL来检查空值。下面的例子就以“dob列为空”可以检索顾客#4的记录:
7 a. }/ g$ ?* l. z
$ u4 u6 Z+ g, N  n" R# aSELECT customer_id,first_name,last_name,dob

/ M% |' j2 r: F3 a# [! IFROM customers
  k" U: s# j. G( p" N* m, ]WHERE dob IS NULL;
; k5 x# ?. H' T  q. C$ T0 M 1-13112G35322411.jpg % l* H! J2 w; {. N- Y4 Y  _

/ v8 s: k3 _. ^+ [# u' f) j+ u; Y在下面这个例子中,使用的条件是“phone列为空”可以查询出顾客#5的记录:
$ U3 \/ N8 }5 H/ b# Q1 a; L: k  g: E$ y
SELECT customer_id,first_name,last_name,dob

/ Y; l7 q8 p/ A' u$ b* b) H% aFROM customers
% y. O$ B  `! c3 @1 VWHERE phone IS NULL;
, ^/ n7 H1 q  E  B* U3 i 1-13112G3533W64.jpg 2 g. D1 f# U  e# Y2 _& Y
既然空值不会显示任何内容,那么在检索所有行时又如何区分空值和空字符串呢?答案是使用Oracle内置的一个函数NVL()。NVL()函数可以将空值转换成另外一个可以真正理解的值,NVL()函数可以接受两个参数:列(或者更确切的说是可以返回一个值的任意表达式)和一个值,如果第一个参数是空值,就将其替换成第二个参数的值,下面举例进行说明,NVL()函数将phone列的一个空值转换为字符串“Unknown phone number”
7 A# o! A. P6 j8 n$ h$ g1 S
$ A! e/ K" E% P% H. y( `) X6 u$ PSELECT customer_id,first_name,last_name,dob
, a% r- P& T, X% j" a5 QNVL(phone,'Unknown phone number') AS PHONE_NUMBER/ x3 B2 a0 z6 C
FROM customers;
- P  {! R- G; T. u+ C% R3 A 1-13112G354464F.jpg
$ ]5 n% x! U( B5 x- f( lNVL()函数除了用于转换包含空值的字符串列之外,还可以用于转换数字列和日期列。7 Z* Q' F( V! W+ l' G

, r4 I3 H. F) e, G

全部评论 0

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