0

私にとって本当に奇妙な現象であることがわかりました。バージョン5.0.92のMySQLサーバーでは、次のようにクエリを使用します。

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

空でない場合は親指の値を取得したいので、そうでない場合は画像の値を取得します。これで、このサーバー上の1つのデータベースで、これは完全に正常に機能します。ただし、まったく同じサーバー上の別のデータベースでは、空でなくてもthumb 常にimagefalseと評価され、の値が常に選択されます。

私は使用できることを知っています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 に答える