有关oracle max函数的疑惑,求解!

lgq_0714 2011-08-04 10:57:05
表结构如下:
create table M_PROJECT_WORK_FINISH
(
WORK_FINISH_ID VARCHAR2(31) not null,
WORK_ITEM_ID VARCHAR2(31),
PROJECTID VARCHAR2(31),
STATUS VARCHAR2(31)
)

select * from M_PROJECT_WORK_FINISH where projectid='2010-3201-0301-000007'
查询结果如下:
1 754 2 2010-3201-0301-000007 1
2 755 9 2010-3201-0301-000007 0
3 756 5 2010-3201-0301-000007 1

select max(to_number(work_item_id)) as max from m_project_work_finish where projectid='2010-3201-0301-000007' 的查询结果是9


为什么如下的sql语句查询就有变成空值了呢:
select max(to_number(work_item_id)) as max from m_project_work_finish where projectid='2010-3201-0301-000007' and status='1'


求解!
...全文
412 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Kobayashi 2011-08-04
  • 打赏
  • 举报
回复
你这样查出来不可能为空。。
你再看一下你的SQL是不是写错了?
yixilan 2011-08-04
  • 打赏
  • 举报
回复
[Quote=引用楼主 lgq_0714 的回复:]
表结构如下:
create table M_PROJECT_WORK_FINISH
(
WORK_FINISH_ID VARCHAR2(31) not null,
WORK_ITEM_ID VARCHAR2(31),
PROJECTID VARCHAR2(31),
STATUS VARCHAR2(31)
)

select * from M_PROJECT_WOR……
[/Quote]
第二个SQL语句是有值的呀:
MAX
1 5
yangqm22 2011-08-04
  • 打赏
  • 举报
回复
估计信息给得不全。
caoleione 2011-08-04
  • 打赏
  • 举报
回复
应该不是语法上的错误 检查操作是否正确
秋雨飘落 2011-08-04
  • 打赏
  • 举报
回复
SQL> select max(to_number(work_item_id)) as max from m_project_work_finish where projectid='2010-3201-0301-000007';

MAX
----------
9

SQL> select max(to_number(work_item_id)) as max from m_project_work_finish where projectid='2010-3201-0301-000007' and status='1';

MAX
----------
5

SQL>

你操作有问题
ssqtjffcu 2011-08-04
  • 打赏
  • 举报
回复
select * from m_project_work_finish where projectid='2010-3201-0301-000007' and status='1';
先查查上面这语句有没有记录,如果没有话那就status='1'的条件不符合,STATUS字段里没有1的记录,你看到是1,有可能是1后还有空格,你可以用length()看看它的长度
yejihui9527 2011-08-04
  • 打赏
  • 举报
回复
select * from m_project_work_finish where projectid='2010-3201-0301-000007' and status='1';
有没有记录先 木有记录 那肯定就是null了
luoyoumou 2011-08-04
  • 打赏
  • 举报
回复
为什么如下的sql语句查询就有变成空值了呢:
select max(to_number(work_item_id)) as max from m_project_work_finish where projectid='2010-3201-0301-000007' and status='1'

-- 如果你的 status 字段是 char(N)类型的话(N>=1),
-- 当你往这个字段插入数据的时候,当插入的字符串长度不够N位时,会在其后面添加空格!

-- 所以:请检查你的原表的 status 字段的数据类型 及宽度!
robin_ares 2011-08-04
  • 打赏
  • 举报
回复
lzn你在讲相声吧,吼吼。。。。
perfectdv 2011-08-04
  • 打赏
  • 举报
回复
不是空值啊

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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