2

テーブル (userinfo) の列挙型フィールド (UserStatus) で異常な問題に直面しています。テーブル構造は次のとおりです。

Field       Type        Default
------------------------------------------
Id          int(11)       (NULL)
FirstName   varchar(50)   (NULL)
LastName    varchar(50)   (NULL)
....        ...           ...
....        ...           ...   
UserStatus  enum('0','1') (NULL)

ここでは、UserStatus 値が NULL、0、1 の行があります。しかし、次のような UserStatus フィールドに基づいて行を選択しようとすると、次のようになります。

SELECT 
    * 
FROM 
    userinfo 
WHERE 
    UserStatus<>'1'

機能せず、結果セットが空になります。

前もって感謝します。

4

2 に答える 2

3

それNULL <> '1'はそれ自体であるため、条件はis であるNULL行と一致しないことに注意してください。代わりに次の式を使用してください。UserStatusNULL

UserStatus IS NULL OR UserStatus <> '1'
于 2013-04-10T20:54:55.370 に答える
0

デフォルト値を指定してフィールドを作成すると、より良い構造になりますNOT NULLが、この場合は使用できます

 SELECT * 
 FROM userinfo 
 WHERE ifnull(UserStatus, '0') <> '1'
于 2013-04-10T20:55:21.513 に答える