gpt4 book ai didi

mysql - 为什么 MySQL 8 IF 和 IFNULL 在测试值为 NULL 的变量时返回 BLOB 结果?

转载 作者:行者123 更新时间:2023-12-05 07:06:39 25 4
gpt4 key购买 nike

注意:我已经把这个问题的本质移到here了了解了一些正在发生的事情,但仍想了解。 (本质上,当变量未定义或在定义前已设置为 NULL 时,ISNULL 和 COALESCE 表现异常。)

我一定是遗漏了一些非常简单的东西,但我没有看到类似的上一个问题的任何答案。如果未设置变量,我想使用默认值,但不知道该怎么做。

SET @x = NULL;
SELECT IFNULL(NULL, 5), IFNULL(@x,5), IF(@x IS NULL, 5, @x); -- gives 5, BLOB, BLOB

我读到 COALESCE 是在这里使用的正确函数,但 COALESCE(@x,5) 也给出 BLOB。

我错过了什么?实际上不可能说 x = x OR 5 吗?

最佳答案

这很奇怪。使用 MySQL Workbench,如果您运行所有 3 个 block ,它将开始工作:

SET @x = NULL;
SELECT IFNULL(NULL, 5), IFNULL(@x,5), IF(@x IS NULL, 5, @x); -- 5, blob, blob

SET @x = 'TEST';
SELECT IFNULL(NULL, 5), IFNULL(@x,5), IF(@x IS NULL, 5, @x); -- 5, TEST, TEST

SET @x = NULL;
SELECT IFNULL(NULL, 5), IFNULL(@x,5), IF(@x IS NULL, 5, @x); -- 5, 5, 5

据我所知,您无法为用户定义的变量定义类型,但 MySQL 似乎不知道如何处理此变量,直到您首先将其设置为非空值。如果我在 sqlDeveloper 中运行您的语句,它将输出 77686174 而不是“BLOB”。

关于mysql - 为什么 MySQL 8 IF 和 IFNULL 在测试值为 NULL 的变量时返回 BLOB 结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62400234/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com