oracle判断非空函数

我想实现,当col非空时,显示col的值,如果为空,则显示1

 select nvl(select col from table where ......   ,  1) from table 

为什么查询时报错

FineReport 浮一 发布于 2024-7-8 09:25
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
煮酒话青梅Lv3见习互助
发布于2024-7-8 09:46(编辑于 2024-7-8 16:08)

微信截图_20240708160719.png 

select nvl((select col from table where ...... )  ,  1) from table 

里边那个sql套个括号吧。

  • 浮一 浮一(提问者) 不行,nvl 的第一个参数只能是字段,不能是条件表达式
    2024-07-08 13:53 
  • 煮酒话青梅 煮酒话青梅 回复 浮一(提问者) 可以的 你是返回多行了吧
    2024-07-08 16:03 
  • 浮一 浮一(提问者) 回复 煮酒话青梅 我也是返回单行,但第一个参数的sql没加括号,老是报错
    2024-07-09 13:31 
最佳回答
0
Z4u3z1Lv6专家互助
发布于2024-7-8 09:26(编辑于 2024-7-8 09:27)

SELECT NVL(COL,'1') FROM ......

-----------

或者用case 

select  case  when col is null then '1' else col end from ..........

  • 浮一 浮一(提问者) nvl 的第一个参数,必须是某字段,不能是sql表达式吗
    2024-07-08 09:27 
最佳回答
0
snrtuemcLv8专家互助
发布于2024-7-8 09:27

你查询的是不是是多个数据,正常子查询一个数据不会的

  • 浮一 浮一(提问者) nv1的第一个参数,查出来要么只有1个结果,要么为空
    2024-07-08 09:30 
  • 3关注人数
  • 238浏览人数
  • 最后回答于:2024-7-8 16:08
    请选择关闭问题的原因
    确定 取消
    返回顶部