首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何忽略空值而只打印真值?

如何忽略空值而只打印真值?
EN

Stack Overflow用户
提问于 2019-05-08 09:28:33
回答 2查看 117关注 0票数 0

我对SQL很陌生,所以我试图通过创建一个简单的登录页面来学习它,我在数据库中有3个用户,如果找到匹配的话,我试图使SQLite返回为真,如果找到NULL,则什么也不返回。

这是一个叫做“用户”的表。

代码语言:javascript
运行
复制
ID          username    password    recovery
----------  ----------  ----------  ---------- 
1           Admin       pass         476 
2           mod         pass123      928      
3           test001     12345        182     

此代码工作正常,但它同时返回NULL和true:

代码语言:javascript
运行
复制
select case when username in ('mod') 
AND password = ('pass123') then true
else NULL end from users

它所做的:

代码语言:javascript
运行
复制
1    NULL
2    2
3    NULL

我需要它做的是:

代码语言:javascript
运行
复制
1   2

我试了很多东西,如限制和秩序,但我搞不懂,有什么帮助吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-08 09:36:37

我猜您需要为包含用户数据的行的1 ( true2 )获取id

您不需要CASE语句,而需要WHERE子句中的一个条件。

也不需要LIKE操作符,因为您检查是否相等。

所以要这样做:

代码语言:javascript
运行
复制
select true, id 
from users 
where username = 'mod' and password = 'pass123' 
票数 0
EN

Stack Overflow用户

发布于 2019-05-08 09:41:33

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

代码语言:javascript
运行
复制
ID          username    password    recovery
----------  ----------  ----------  ---------- 
1           Admin       pass         476 
2           mod         pass123      928      
3           test001     12345        182     

然后将它们转换为单个列,根据用户名和密码值显示true或null。这是因为SELECT子句中的内容而得到的结果。

你想做的是:

  • 添加WHERE子句,以实际选择所需的记录(username=whatever和password=whatever)
  • 在SELECT子句中,显示记录的ID (不确定您想要的是true还是ID,但是根据您想要的例子,建议您需要记录的ID ),因此选择ID
  • 可能将结果集限制为单个记录,如果是,则添加限制子句(限制1)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56037538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档