问题描述
在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?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!