没有运算符的MySQL字符串比较 - 在​​同一台服务器上不一致?

时间:2012-08-09 09:16:14

标签: mysql

我发现对我来说这是一个非常奇怪的现象。在我的MySQL服务器版本5.0.92中,我使用如下查询:

SELECT IF(thumb, thumb, image) AS thumb FROM blog WHERE id = 200;

因为我想获取拇指值,如果它不为空,否则为图像值。现在在这个服务器上的一个数据库中,这完全正常,就像我想要的那样。但是在完全相同的服务器上的另一个数据库上,thumb 总是评估为false,即使它不为空,也始终选择image的值。

我知道我可以使用thumb != '',这确实适用于两个数据库,但请有人告诉我这是怎么发生的?这是某种特定于数据库的设置吗?

1 个答案:

答案 0 :(得分:0)

如果thumb是字符串列,那么您应该使用类似的查询:

SELECT IF(thumb IS NOT NULL AND thumb != '', thumb, image) AS thumb FROM blog WHERE id = 200;

同时检查两个数据库的CHARACTER SET,因为字符串比较取决于字符集。

SHOW CREATE DATABASE db_name;

Database Character Set and Collation