日期:2014-05-17  浏览次数:20434 次

请教一个sel server 语句

语句:


SELECT ProductName,UnitPrice*(UnitsInStock+ISNULL(UnitsOnOrder,0))
FROM Products


问题:

1.UnitPrice* 是什么意思?
2. UnitsInStock+ISNULL()是什么意思? 为甚么要用一个‘+'号呢?
3. 连起来时什么意思? 
    
谢谢!

------解决方案--------------------
#1.UnitPrice是一个字段,*号,是乘法中的乘数
#2.UnitsInStock是一个字段,ISNULL函数的作用是:当UnitsOnOrder字段的值是NULL时,就把NULL变成0
#3.总体意思:从Products表中获取所有行的数据,每行有两列,一列是 ProductName,另一列,是经过计算得来的,计算方法为:UnitPrice 乘以 (UnitsInStock + UnitsOnOrder),应该是指:单价乘以(现在有的库存+已下单量)
------解决方案--------------------
书中说:In the example above, if any of the "UnitsOnOrder" values are NULL, the result is NULL.

null加任何值,结果都是null。

这是规定。
就像你应该一年长一岁,而你非要想一年长2岁。那你就违背了游戏规则,懂了么?
------解决方案--------------------
1.UnitPrice* 是什么意思?
unitprice是你的列,然后用这列的数据乘以括号里面得到的数据
2. UnitsInStock+ISNULL()是什么意思? 为甚么要用一个‘+'号呢?
因为它原本应该是应该字符串,而+就是把字符串连起来显示而已,就好像select 'aa'+'bb' 会出现'aabb'
3. 连起来时什么意思? 就是获得一个值,但是这个值是字符串,估计你那个要用CONVERT/CAST来转换数据类型
------解决方案--------------------
引用:
Quote: 引用:

#1.UnitPrice是一个字段,*号,是乘法中的乘数
#2.UnitsInStock是一个字段,ISNULL函数的作用是:当UnitsOnOrder字段的值是NULL时,就把NULL变成0
#3.总体意思:从Products表中获取所有行的数据,每行有两列,一列是 ProductName,另一列,是经过计算得来的,计算方法为:UnitPrice 乘以 (UnitsInStock + UnitsOnOrder),应该是指:单价乘以(现在有的库存+已下单量)

非常感谢!
请再帮忙给看一下这个:

SELECT ProductName,UnitPrice*(UnitsInStock+UnitsOnOrder)
FROM Products

书中说:In the example above, if any of the "UnitsOnOrder" values are NULL, the result is NULL.
提问:为什么UnitsOnOrder是null,最后的结果就是null? 最后的结果应该是UnitPrice*(UnitsInStock+UnitsOnOrder, 这个乘法式中间的括号里不是还有plus sign '+'么?

请记住一点:任何值(包括NULL)与NULL的运算,结果还是NULL.
当然,可以开启SQL SERVER的环境选项,把NULL当成空字符串来处理。