语句:
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来转换数据类型
------解决方案--------------------
请记住一点:任何值(包括NULL)与NULL的运算,结果还是NULL.
当然,可以开启SQL SERVER的环境选项,把NULL当成空字符串来处理。