如何忽略NULL值而只显示真实值?

时间:2019-05-08 09:28:33

标签: sqlite

我是SQL的新手,所以我试图通过创建一个简单的登录页面来学习它,我在数据库中有3个用户,并且试图使SQLite如果找到匹配项,则返回true,否则返回true。发现NULL。

这是称为“用户”的表。

A a = map.getOrDefault(true, map.get(false)); // null if not found

此代码有效,但它返回NULL和true:

ID          username    password    recovery
----------  ----------  ----------  ---------- 
1           Admin       pass         476 
2           mod         pass123      928      
3           test001     12345        182     

它的作用:

select case when username in ('mod') 
AND password = ('pass123') then true
else NULL end from users

我需要它做什么:

1    NULL
2    2
3    NULL

我尝试了LIMIT和ORDER之类的许多操作,但我不知道该如何解决,请帮忙吗?

2 个答案:

答案 0 :(得分:0)

我想您需要为包含用户数据的行的1获取true的含义,2id。 您不需要CASE语句,而需要WHERE子句中的条件。
同样也不需要LIKE运算符,因为您检查是否相等。
这样做:

select true, id 
from users 
where username = 'mod' and password = 'pass123' 

答案 1 :(得分:0)

使用当前的代码,您正在选择数据库中的所有记录

ID          username    password    recovery
----------  ----------  ----------  ---------- 
1           Admin       pass         476 
2           mod         pass123      928      
3           test001     12345        182     

,然后将它们转换为单个列,根据用户名和密码值显示true或null。这就是您所得到的,因为SELECT子句中包含了什么。

您想要做的是:

  • 添加WHERE子句,以实际选择所需的记录(用户名=任意,密码=任意)
  • 在SELECT子句中,显示记录的ID(不确定您想要的是True还是ID,但根据您想要的示例,建议您想要记录的ID),因此是SELECT ID
  • 可能将结果集限制为一条记录,如果是,则添加LIMIT子句(LIMIT 1)