当前位置: 首页 > 面试题库 >

mysql中ifnull和coalesce有什么区别?

叶冥夜
2023-03-14
问题内容
select ifnull(null,'replaces the null')
-->replaces the null

select coalesce(null,null,'replaces the null')
-->replaces the null

在这两个条款中,主要区别在于参数传递。因为ifnull这是两个参数,我们可以通过合并2或3,但是这两个之间是否还有其他区别?以及它在MSSql中的不同之处。


问题答案:

两者之间的主要区别是该IFNULL函数接受两个参数,如果不存在则返回第一个,如果NULL第二个则返回第二个NULL

COALESCE函数可以采用两个或多个参数,并返回第一个非NULL参数,或者NULL如果所有参数均为null,例如:

SELECT IFNULL('some value', 'some other value');
-> returns 'some value'

SELECT IFNULL(NULL,'some other value');
-> returns 'some other value'

SELECT COALESCE(NULL, 'some other value');
-> returns 'some other value' - equivalent of the IFNULL function

SELECT COALESCE(NULL, 'some value', 'some other value');
-> returns 'some value'

SELECT COALESCE(NULL, NULL, NULL, NULL, 'first non-null value');
-> returns 'first non-null value'

更新: MSSQL做更严格的类型和参数检查。此外,它不具有IFNULL功能,而是ISNULL具有功能,该功能需要知道参数的类型。因此:

SELECT ISNULL(NULL, NULL);
-> results in an error

SELECT ISNULL(NULL, CAST(NULL as VARCHAR));
-> returns NULL

COALESCEMSSQL中的功能还要求至少一个参数为非null,因此:

SELECT COALESCE(NULL, NULL, NULL, NULL, NULL);
-> results in an error

SELECT COALESCE(NULL, NULL, NULL, NULL, 'first non-null value');
-> returns 'first non-null value'


 类似资料:
  • 这两个子句的主要区别是参数传递。对于< code>IFNULL是两个参数,对于< code>COALESCE是多个参数。所以除此之外,这两者之间还有其他区别吗? 它在MS SQL中有何不同?

  • SQL ISNULL()、NVL()、IFNULL() 和 COALESCE() 函数 请看下面的 "Products" 表: P_Id ProductName UnitPrice UnitsInStock UnitsOnOrder 1 Jarlsberg 10.45 16 15 2 Mascarpone 32.56 23 3 Gorgonzola 15.67 9 20 假如 "UnitsOnOr

  • 问题内容: 我遇到了两种方法来自动增加mysql中的ID。 一个是 SERIAL ,另一个是 AUTOINCREMENT 。 因此,假设我想创建一个表myfriends。我可以通过两种方式创建它: 1) 2) 两者之间有什么区别? 要么 有谁能比别人有优势? 请帮忙。 问题答案: 根据文档 SERIAL是BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE的

  • 问题内容: 似乎和我做同样的事情。 在任何情况下我都应该使用代替,反之亦然? 问题答案: 在CRUD操作中,“ 是”和“ U”。它们是持久性存储的四个基本功能中的两个。另外两个是和。如果没有至少这四个操作,则不能认为典型的数据库系统是完整的。 使用插入一个新的记录。 使用更新现有的记录。

  • 问题内容: 在哪种情况下,您会使用哪种?有什么区别吗?持久性引擎通常使用哪一个来存储布尔值? 问题答案: TINYINT是8位整数值,BIT字段可以存储1位BIT(1)和64位BIT(64)之间。对于布尔值,BIT(1)很常见。

  • 问题内容: 我曾经与宝石打交道,但如今经常听到关于宝石的消息。此外,默认情况下,它也包含在 Gemfile 中。 使用宝石有什么区别和优势? 问题答案: 这是来自mysql2 gem页面的引用: 是的…但是为什么呢? 有人:老兄,Mysql gem可以正常工作。 我:的确可以,但是只给您nil和用于字段值的字符串。让您在Ruby-land中将它们转换为正确的Ruby类型-这很慢。 有人:好的,但是