在MySQL中为什么这个IF返回false

在MySQL中为什么这个IF返回false

本文介绍了在MySQL中为什么这个IF返回false?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在MySql中,如果IF()函数的第一个参数是字符串,为什么它返回false?

In MySql, if the first argument of an IF() function is a string, why does it return false?

SELECT IF('string', 'string', 'not string'); -- 'not string'

当然,如果我做的话,我可以解决这个问题

Of course I could sort of fix this if I did

IF(!ISNULL('string'), 'string', 'not string')) -- 'string'

IFNULL('string', 'not string'); -- 'string'

它似乎有点违反直觉,它以一种方式评估一个字符串看作

It seems somewhat counter-intuitive that it evaluates a string the way that it does seeing as

SELECT IF(1, 'one', 'not one'); -- 'one'

SELECT IF('1', 'one', 'not one'); -- 'one'

评估他们的做法......

evaluate the way that they do...

推荐答案

来自

如果expr1为TRUE(expr1<> 0且expr1<> NULL),则IF()返回
expr2;否则返回expr3。
IF()返回一个数字或字符串
值,具体取决于使用它的
中的上下文。

If expr1 is TRUE (expr1 <> 0 and expr1 <> NULL) then IF() returns expr2; otherwise it returns expr3. IF() returns a numeric or string value, depending on the context in which it is used.

所以1为真,因为1!= 0和1!= NULL。这就像你在C中看到的那样。

So 1 is true because 1 != 0 and 1 != NULL. This is like what you would see in C.

但是对于一个字符串,说'test'的计算结果为true在定义中没有真正的依据,并且没有逻辑感。它需要与布尔结果的某些东西进行比较。

But for a string, saying a 'test' evaluates to true has no real basis in the definition and does not make logical sense. It needs to be compared to something for a boolean result.

这篇关于在MySQL中为什么这个IF返回false?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-28 16:48