考试报名
考试报名
考试内容
考试大纲
在线客服
返回顶部

备考刷题,请到

CDA认证小程序

有表emp记录员工信息,有字段empid、sal、comm分别记录员工编号、员工基本工资、员工提成。其中comm可能存在null值。现在要计算员工总工资,代码正确的有( )
A. SELECT *, sal+comm as 总工资 from emp;
B. SELECT *, sal + if(comm is null, 0, comm) as 总工资 from emp;
C. SELECT *, ifnull(sal+comm, sal) as 总工资 from emp;
D. SELECT *, sal + ifnull(comm, 0) as总工资 from emp;
上一题
下一题
收藏
点赞
评论
题目解析
题目评论(5)

comm存在null值的情况下,计算前要进行非null判断,所以A错。 IFNULL(expression, value) 参数说明: expression:要判断是否为NULL的表达式或字段。 value:在expression为NULL时要返回的替代值。

正确答案是:B 和 D。

**分析:**

1. **A: `SELECT *, sal+comm as 总工资 from emp;`**
- 这个查询在计算总工资时直接将 `sal` 和 `comm` 相加。如果 `comm` 字段存在 `null` 值,那么结果也会是 `null`。这种情况下,不能正确计算总工资。

2. **B: `SELECT *, sal + if(comm is null, 0, comm) as 总工资 from emp;`**
- 这个查询使用了 `if` 函数来检查 `comm` 是否为 `null`。如果 `comm` 是 `null`,则使用 0 来代替 `null`,否则使用 `comm` 的实际值。这样可以确保在 `comm` 为 `null` 的情况下,仍然能够正确计算总工资。

3. **C: `SELECT *, ifnull(sal+comm, sal) as 总工资 from emp;`**
- 这个查询使用了 `ifnull` 函数,但它是检查 `sal+comm` 的结果是否为 `null`。如果 `comm` 是 `null`,则 `sal+comm` 结果也会是 `null`,此时 `ifnull` 会返回 `sal`。这种情况下,虽然避免了 `null` 值,但并没有正确计算总工资,因为忽略了 `comm` 的值。

4. **D: `SELECT *, sal + ifnull(comm, 0) as总工资 from emp;`**
- 这个查询使用了 `ifnull` 函数来检查 `comm` 是否为 `null`。如果 `comm` 是 `null`,则使用 0 来代替 `null`,否则使用 `comm` 的实际值。这样可以确保在 `comm` 为 `null` 的情况下,仍然能够正确计算总工资。

综上所述,B 和 D 是正确的答案,因为它们都正确处理了 `comm` 字段可能存在的 `null` 值,并正确计算了总工资。

用户117600
C选项很明显是错的,忽略了sal+cumm为正常数字的情况。为什么答案还会有C
用户118687
无敌了
用户115663
咋这个答案也是有错误的啊
用户80497
答案就是bcd吧?
用户113401
答案是 bc 但是写的答案是 bcd