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() 展开
where a.id='005' and a.row_num=2 and
nvl(a.content,'-1')=nvl('rr','-1')
这句是什么意思,尤指后面的nvl()=nvl() 展开
3个回答
展开全部
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。
意思是, 如果 参数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')
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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的类型
【语法】NVL (expr1, expr2)
【功能】若expr1为NULL,返回expr2;expr1不为NULL,返回expr1。
注意两者的类型要一致
【语法】NVL2 (expr1, expr2, expr3)
【功能】expr1不为NULL,返回expr2;expr2为NULL,返回expr3。
expr2和expr3类型不同的话,expr3会转换为expr2的类型
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询