----等于null吗?为什么这样查询出的答案不合适,请教各位了

xiaohu8855 2010-06-26 05:37:38
建表: create table SIZES(
ID NUMBER,
NAME VARCHAR2(100),
VALUE VARCHAR2(10),
OWN VARCHAR2(10)
)

插入语句:
insert into SIZES (ID, NAME, VALUE, OWN) values (1, 'a', '----', 'f0');
insert into SIZES (ID, NAME, VALUE, OWN) values (2, 'b', '23', 'f0');
insert into SIZES (ID, NAME, VALUE, OWN) values (3, 'c', '-', 'f0');
insert into SIZES (ID, NAME, VALUE, OWN) values (4, 'd', '1231', 'f0');
insert into SIZES (ID, NAME, VALUE, OWN) values (1, 'a', '-', 'f1');
insert into SIZES (ID, NAME, VALUE, OWN) values (2, 'b', '45', 'f1');
insert into SIZES (ID, NAME, VALUE, OWN) values (3, 'c', '-', 'f1');
insert into SIZES (ID, NAME, VALUE, OWN) values (4, 'd', '56', 'f1');
insert into SIZES (ID, NAME, VALUE, OWN) values (5, 'f', '-', 'f1');

此时执行
select
max(decode(s.own,'f0',s.value,0)) "f0",
max(decode(s.own,'f1',s.value,0)) "f1"
from sizes s group by s.id order by s.id
显示结果为:
f0 f1
--------
0 0
23 45
0 0
1231 56
0 -
为什么结果不是下面这样呢。。。。。,可是把类似----换成其他符号可以呢,比如“|| \ | ! ”呢
f0 f1
--------
---- -
23 45
- -
1231 56
0 -
但是在表中在添加一条记录insert into SIZES (ID, NAME, VALUE, OWN) values (5, 'f', '-', 'f0');时,
原来查询结果中的0 - 也变成了 0 0 呢?

大家遇到过这样的情况吗? 请教了,谢谢
...全文
90 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaohu8855 2010-06-28
  • 打赏
  • 举报
回复
好的,谢谢各位了
超叔csdn 2010-06-28
  • 打赏
  • 举报
回复
这是因为'-'的ASCII码只有45,比'0'要小。
所以取max的时候会选'0'.

如果换成其他符号,如'|',由于'|'的ASCII码是124,比'0'要大。
所以取MAX的时候会取'|'.
xiaohu8855 2010-06-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 vber1010 的回复:]
select
max(decode(s.own,'f0',s.value,null)) "f0",
max(decode(s.own,'f1',s.value,null)) "f1"
from sizes s group by s.id order by s.id
[/Quote]

麻烦问下,为什么会这样呢,其他字符为什么是正常的?
心中的彩虹 2010-06-26
  • 打赏
  • 举报
回复

SQL> edi
已写入 file afiedt.buf

1 select id,
2 max(decode(s.own,'f0',s.value,null)) f0,
3 max(decode(s.own,'f1',s.value,null)) f1
4 from sizes s
5 group by s.id
6* order by s.id
SQL> /

ID F0 F1
---------- ---------- ----------
1 ---- -
2 23 45
3 - -
4 1231 56
5 -


vber1010 2010-06-26
  • 打赏
  • 举报
回复
select
max(decode(s.own,'f0',s.value,null)) "f0",
max(decode(s.own,'f1',s.value,null)) "f1"
from sizes s group by s.id order by s.id

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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