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

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

来自版块 站长杂谈
44151
0
温馨提示:如下载链接失效,请前往 问题反馈专用帖 进行反馈! 兔源码交流群:493651246

数据库中如何表示未知的值呢?答案是使用一个特殊的值,我们称之为空值(null)。空值并不是一个空字符串,而是一个特殊的值。空值就表示该列的值未知。当选择一个包含空值的列时,看到的结果是该列中不包含任何内容。在前面从customers表中查询行时,就已经看到了这一点(或者说根本看不到内容):顾客#4的dob列是空值,顾客#5的phone列也是空值。  ]( R7 o# @9 Z$ V; ^
在SELECT语句中,也可以使用IS NULL来检查空值。下面的例子就以“dob列为空”可以检索顾客#4的记录:+ Q6 L8 u: y. v# g& |6 @

1 M. W/ m2 `" l8 t7 E6 [% lSELECT customer_id,first_name,last_name,dob
% _5 p# Z+ R/ E2 j3 l! T
FROM customers1 x; b' v1 ?- H' ^1 ~
WHERE dob IS NULL;
: T" J& g+ D! A2 J$ \& A 1-13112G35322411.jpg
6 e6 {" m! v) X+ W1 v: |
2 F% z) I+ X8 X$ j5 b. f6 i在下面这个例子中,使用的条件是“phone列为空”可以查询出顾客#5的记录:
( w! U$ k/ s# B' T6 G; F# O4 ]4 W3 C7 W0 L  O
SELECT customer_id,first_name,last_name,dob

9 I1 v# I& p7 x9 P* w9 l: s/ s+ PFROM customers+ E4 Z! `5 B5 \. O7 A- m
WHERE phone IS NULL;; P" r! s# B( q5 n$ ^/ p8 {6 {
1-13112G3533W64.jpg
, J. O+ ?7 _4 m7 v* Z既然空值不会显示任何内容,那么在检索所有行时又如何区分空值和空字符串呢?答案是使用Oracle内置的一个函数NVL()。NVL()函数可以将空值转换成另外一个可以真正理解的值,NVL()函数可以接受两个参数:列(或者更确切的说是可以返回一个值的任意表达式)和一个值,如果第一个参数是空值,就将其替换成第二个参数的值,下面举例进行说明,NVL()函数将phone列的一个空值转换为字符串“Unknown phone number”
7 b9 `) T/ E+ G7 }! E4 \# W
! X0 B8 ^) B0 v# t2 I% ESELECT customer_id,first_name,last_name,dob
* S& ~1 k  d0 v" j% i4 F$ BNVL(phone,'Unknown phone number') AS PHONE_NUMBER, U9 n- N9 P4 F4 o- u3 f- ^
FROM customers;" Y+ o  ?4 f  x$ }
1-13112G354464F.jpg 5 |3 u) T' q3 M5 s4 A7 I* D% o
NVL()函数除了用于转换包含空值的字符串列之外,还可以用于转换数字列和日期列。
9 K, G+ f! Q' j4 D5 L# r* V% P2 d' {
% w9 r( D, U' C
您需要登录后才可以回帖 立即登录
返回顶部