首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL中NULL和空列值的乘法

SQL中NULL和空列值的乘法
EN

Stack Overflow用户
提问于 2012-03-28 08:56:35
回答 5查看 19.6K关注 0票数 1

这是我的面试问题

Area表中有两个列,分别称为Length和Breadth

代码语言:javascript
复制
Length  Breadth  Length*Breadth
20      NULL        ?

30                   ?

21.2     1           ?

我尝试在插入时在MYSQL上运行相同的问题,为了插入一个空值,我尝试了下面的查询。在MYSQL中插入空值时,我是否遗漏了什么。

插入test.new_table值(30,);

答案:使用Null时,Result为Null。With float和int乘法结果为float

EN

回答 5

Stack Overflow用户

发布于 2012-03-28 09:20:26

根据您的问题,预期结果如下所示。

代码语言:javascript
复制
SELECT LENGTH,BREADTH,LENGTH*BREADTH AS CALC_AREA FROM AREA;


LENGTH  BREADTH   CALC_AREA 
20      
30      0         0
21.2    1         21.2

对于SQL SERVER中的任何(第一个)记录,如果使用NULL进行计算,则答案将为NULL。

对于SQL SERVER中的任何(第二个)记录,如果在非空值和空值之间进行乘积计算,则结果将为零,因为空值将被视为零。

对于SQL SERVER中的任何(第三个)记录,如果在两个非空数据类型值之间进行计算,则答案将是非空值。

查看SQL Fiddle以获取参考- http://sqlfiddle.com/#!3/f250a/1

票数 4
EN

Stack Overflow用户

发布于 2012-03-28 09:09:17

除非呼吸是VARCHAR,否则不会出现空白呼吸(第二行)。假设这样,答案将是:

  1. NULL (因为NULL乘以任何值都是NULL)
  2. 抛出错误(因为空字符串不是数字。在Sql Server中,错误是“将数据类型varchar转换为numeric.")
  3. 21.20时出错(例如,在Sql Server中,到数值类型的转换是自动进行的,因此SELECT 21.2 * '1'返回21.20)。”
票数 0
EN

Stack Overflow用户

发布于 2012-03-28 09:11:15

任意值和NULL的乘积为NULL。如果你想在谷歌上搜索,这叫做“零传播”。要在面试中得分,您可能需要指出NULL不是一个值;它是一个特殊的标记。

列宽度有一个条目"NULL“和一个空条目(在第二行)的事实具有误导性。在特定行中没有值的数值列表示该行为NULL。所以第二列也应该显示"NULL“。

第三行21.2 * 1的答案取决于列"Length*Breadth“的数据类型。如果是浮点型、双精度型或numberic(16,2)这样的数据类型,则答案是21.2。如果是整数列(integer、long等),则答案是21。

更尖刻的答案可能是“没有答案。字符串"Length*Breadth”不是合法的SQL列名。“

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9899787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档