0

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

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

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

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

4

1 回答 1

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;

数据库字符集和排序规则

于 2012-08-09T09:19:55.097 回答