使用mysql中的enum字段选择行

我正面临着我的表(userinfo)的枚举字段(UserStatus)的异常问题。 表结构如下:</ p>

 字段类型默认


Id int(11)(NULL)
FirstName varchar(50)(NULL)
LastName varchar(50)(NULL)
... ...... ......
...... ......

UserStatus enum('0','1')(NULL)
</ code> </ pre>

这里我有UserStatus值为NULL,0和1的行。但是当我尝试根据UserStatus字段选择行时,如:</ p>

  SELECT 

  • FROM
    userinfo
    WHERE
    UserStatus&lt;&gt;'1'
    </ code> </ pre>

    它不起作用并导致结果集为空。</ p>

    提前致谢。</ p>
    </ div>

展开原文

原文

I am facing an abnormal issue with the enum field(UserStatus) of my table(userinfo). The table structure is as follows:

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

Here I have rows with the UserStatus values as NULL, 0 and 1. But When I am trying to select rows on the basis of the UserStatus field like:

SELECT 
    * 
FROM 
    userinfo 
WHERE 
    UserStatus<>'1'

Its not working and resulting in an empty resultset.

Thanks in advance.

dqifn68206
dqifn68206 很高兴它奏效了。我已将我的评论转换为答案。
7 年多之前 回复
doudou0612
doudou0612 :谢谢man,它通过使用条件NotMine<>'1'或NotMineISNULL为UserStatus<>'1'工作
7 年多之前 回复
doumu5662
doumu5662 为什么不使用BIT列类型?
7 年多之前 回复
doupa1883
doupa1883 请记住,NULL<>'1'为NULL,因此是假的!您是否尝试过UserStatus<>1或UserStatusISNULL?
7 年多之前 回复

2个回答



请记住 NULL&lt;&gt; '1'</ code>本身是 NULL </ code>,因此您的条件将不匹配 UserStatus </ code>为 NULL </ code>的行。 请改用此表达式:</ p>

  UserStatus IS NULL或UserStatus&lt;&gt;  '1'
</ code> </ pre>
</ div>

展开原文

原文

Remember that NULL <> '1' is itself NULL and therefore your condition won't match rows whose UserStatus is NULL. Use this expression instead:

UserStatus IS NULL OR UserStatus <> '1'



这将是一个更好的结构,如果你给出一个默认值并使字段 NOT NULL </ code>但是 在这种情况下,您可以使用</ p>

  SELECT * 
FROM userinfo
WHERE ifnull(UserStatus,'0')&lt;&gt; '1'
</ code> </ pre>
</ div>

展开原文

原文

It would be a better structure, if you would give a default value and make the field NOT NULL but in this case you could use

 SELECT * 
 FROM userinfo 
 WHERE ifnull(UserStatus, '0') <> '1'

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐