这个表达式的结果是什么?

jxc 2005-01-25 03:04:20
Select 100 || null || 1/null || 1/100+1 from dual;

要求不能依靠任何工具,凭自己的理解来得出结论,并用括号给出执行顺序...
大家自觉啊.
...全文
103 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
qiaozhiwei 2005-01-25
  • 打赏
  • 举报
回复
Select 100 || null || 1/null || 1/100+1 from dual;
执行顺序:
1/null
1/100
转换为 100 || null || null || 0.01 +1 此时运算符优先级相同,从左往右依次计算,最后得到100.01+1 = 101.01
jxc 2005-01-25
  • 打赏
  • 举报
回复
这说明问题: oracle的文档是错的.
oracle的文档里写所有的算术运算的优先级都高于字符串连接.按照它的说法,执行顺序应该是:

Select 100 || null || (1/null) || ((1/100)+1) from dual;

这个的结果是:1001.1
baojianjun 2005-01-25
  • 打赏
  • 举报
回复
Select ((100 || null) || (1/null) || (1/100))+1 from dual;
will52000 2005-01-25
  • 打赏
  • 举报
回复
Select (100 || null) || (1/null) || ((1/100)+1) from dual;
jxc 2005-01-25
  • 打赏
  • 举报
回复
oracle按什么顺序解析的这个表达式呢?
Fire_King 2005-01-25
  • 打赏
  • 举报
回复
看不懂!

学习!
jxc 2005-01-25
  • 打赏
  • 举报
回复
请用括号给出执行顺序,并做简要说明.
谢谢
baojianjun 2005-01-25
  • 打赏
  • 举报
回复
任何數值與null的計算結果都是null!

執行順序是從先||再計算+
baojianjun 2005-01-25
  • 打赏
  • 举报
回复
主要是:
SQL> select 1/100 from dual;

1/100
----------
.01

目前歷時: 00:00:00.25
baojianjun 2005-01-25
  • 打赏
  • 举报
回复
100.01+1
=
101.01

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧