0
SELECT IFNULL(Col,'b') FROM Table

Col をチェックし、null でない場合は Col を返し、そうでない場合は b を返します。

Col をチェックして、null でない場合は「a」を返し、null の場合は「b」を返すにはどうすればよいですか。

私はこれを試しました:

SELECT IF(Col=NULL,'a','b') FROM Table

これは常に「b」を返します。これはどのように行われますか?

4

3 に答える 3

8

IS NULLの代わりに、列が null かどうかを確認するために使用します= NULL

NULLすべての値は結果と比較されるNULLため、常に取得されますb

SELECT IF(Col IS NULL,'a','b') FROM Table
于 2012-08-30T05:54:10.490 に答える
0

CASE独自のステートメントの代わりに、すべての DBMS で機能する ANSI SQL-92 互換ステートメントを使用できますIF

SELECT CASE WHEN Col IS NULL THEN 'a' ELSE 'b' END AS Col
FROM   Table

記号NULLを使用して比較できないため、現在のステートメントは期待どおりに機能していません。代わりに使用する必要があります。=IS NULL

Three Valued Logicを読みたいと思うかもしれません

Null はどのデータ ドメインのメンバーでもないため、「値」とは見なされず、値がないことを示すマーカー (またはプレースホルダー) と見なされます。このため、Null との比較は True または False になることはありませんが、常に 3 番目の論理結果である Unknown になります。

于 2012-08-30T05:54:24.577 に答える
0

null 値を比較するときはIS、代わりに使用します=

SELECT IF(Col IS NULL,'a','b') 
FROM Table
于 2012-08-30T05:55:33.110 に答える