表为:
NO    a
1     2
2     NULL
3     7select * from R where a>num*2 Or (a>num*2) is Unknown
这句结果是什么?
是数据库系统理论的题目,在SQL 2005中没法执行,语法错
那么按照数据库理论这句到底算不算错误???

解决方案 »

  1.   

    select * from R where a>num*2 Or (a>num*2) is Unknown 
    true和false是布尔值,而unknown布尔值
      

  2.   

    那就是对了?但不能执行啊,怎么改能让SQL 2005执行的语句?
      

  3.   


    对sql 2005来说是错的。因为null任何值进行操作都是一个空置。 后面的 is unknown 没有这种写法。
    对于其他的dbms不太了解。另外,理论和实际情况是有一定的差别的。理论上的东西不是都能实现的
      

  4.   

    select * from R where a>num*2 Or a> isnull(num*2,0)改为这样。
      

  5.   

    看上面查询语句的两个查询条件:
    对于a>num*2----就是说查询出R表中a列的值大于num乘以2的所有行。
    对于(a>num*2) is unknow ----就是说查询出R表中a列的值为空的所有行。
    因为 "is nuknow"这样的写法在sqlserver好象是不存在的,所以,上面的查询语句是不是可以改成这样:
    select * from R where isnull(a,0)>num*2 or a is null
      

  6.   

    num 是什么? 是 NO吗?
    is Unknown 是什么? 应该是 isNull(a) 吧?
      

  7.   

    呵不对,是 a is null....低级错误....