奇了怪了?同样结构,不同结果

transit136 2007-01-18 09:07:18
select id from resumeSearcher where (001169081634015-lastsenddate)/(1000*60*60*24)>cycle

将数据类型 varchar 转换为 numeric 时出错。


select id from jobSearcher where (001169081634015-lastsenddate)/(1000*60*60*24)>cycle

一切正常

jobSearcher 和resumeSearcher 这两个表里的lastsenddate字段完全相同,为什么查询时结果出入如此之大,两个表里的其他字段不完全相同,这是为什么?谢谢阿!真的从来没有遇到这种问题啊
...全文
256 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
yesyesyes 2007-01-19
  • 打赏
  • 举报
回复
char太长时隐性转换会出错的,cast为bigint应该行
transit136 2007-01-19
  • 打赏
  • 举报
回复
我不认为,问题在于记录是否是null上面。请看我之行的结果:(注:lastsenddate是毫秒)
select * from resumeSearcher where 001169081634015 > lastsenddate
将数据类型 varchar 转换为 numeric 时出错
select * from jobSearcher where 001169081634015 > lastsenddate
正常

很明显,resumeSearcher 的lastsenddate不能做大小比较,而jobSearcher 则可以
marco08 2007-01-19
  • 打赏
  • 举报
回复
用isnull()函數作NULL判斷吧
transit136 2007-01-19
  • 打赏
  • 举报
回复
不过让我奇怪的正在于此,两个表地lastsendate纪录都是null阿
transit136 2007-01-19
  • 打赏
  • 举报
回复
很抱歉,我忘提示了 lastsenddate是char 15 允许null 因为使我后来家的字段,现在都是null
marco08 2007-01-19
  • 打赏
  • 举报
回复
應該要進行數據類型的轉換, 樓主再好好檢查一下吧
DragonBill 2007-01-19
  • 打赏
  • 举报
回复
lastsenddate两字段的值一样吗?
transit136 2007-01-19
  • 打赏
  • 举报
回复
绝对相同,int 4 默认7
marco08 2007-01-18
  • 打赏
  • 举报
回复
jobSearcher 和resumeSearcher 这两个表里的cycle字段完全相同吗?
marco08 2007-01-18
  • 打赏
  • 举报
回复
把表结构贴出来看看

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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