oracle的nvl

select*fromawherea.id='005'anda.row_num=2andnvl(a.content,'-1')=nvl('rr','-1')这句是什么意思... select * from a
where a.id='005' and a.row_num=2 and
nvl(a.content,'-1')=nvl('rr','-1')
这句是什么意思,尤指后面的nvl()=nvl()
展开
 我来答
badkano
推荐于2017-10-01 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144776 获赞数:885368
团长

向TA提问 私信TA
展开全部

oracle中,nvl函数的含义是如果某字段内容为空则把某字段设置为某某值。

如,test表中,其中id为3,4的name是空值。

现在要查询,使name为空值的内容显示为“无名”。可用如下语句:

select id,nvl(name,'无名') name from test;

运行后结果:

nvl函数解释:

格式为:

NVL( string1, replace_with)

功能:如果string1为NULL,则NVL函数返回replace_with的值,否则返回string1的值,如果两个参数都为NULL ,则返回NULL。

注意事项:string1和replace_with必须为同一数据类型,除非显式的使用TO_CHAR函数进行类型转换。

匿名用户
推荐于2017-10-01
展开全部
NVL ( 参数1, 参数2)

意思是, 如果 参数1 非空, 那么返回参数1。 如果参数1 为空, 返回参数2。
更多追问追答
追问
那等于号后面又是怎么回事
追答
nvl(a.content,'-1')  = nvl('rr','-1')

这么写的目的, 是因为, 在数据库里面
NULL = NULL 是永远不会满足条件的。

因此, nvl(a.content,'-1')
意味着如果 a.content 不是 NULL, 那么返回 a.content, 如果是 NULL, 那么返回 '-1'

后面的那个 nvl('rr','-1') 也是一样的道理。
不过这个 已经写成了 'rr', 'rr' 明显不是 NULL, 因此写 nvl('rr','-1') 没有什么意义。

一般情况下, 是2个都是数据库里面的一列的情况下, 用这种写法。

例如:
nvl(a.content, '-1') = nvl( a.content2 , '-1')
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
heaven书007
2013-05-20 · 超过25用户采纳过TA的回答
知道答主
回答量:63
采纳率:100%
帮助的人:57.1万
展开全部
oracle中对于nvl有如下用法:
【语法】NVL (expr1, expr2)
【功能】若expr1为NULL,返回expr2;expr1不为NULL,返回expr1。
注意两者的类型要一致

【语法】NVL2 (expr1, expr2, expr3)
【功能】expr1不为NULL,返回expr2;expr2为NULL,返回expr3。
expr2和expr3类型不同的话,expr3会转换为expr2的类型
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式