首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Oracle SQL -将选择的计数(*)转换为0或1

Oracle SQL -将选择的计数(*)转换为0或1
EN

Stack Overflow用户
提问于 2015-10-23 19:35:35
回答 4查看 1.8K关注 0票数 2

我使用Oracle,并希望将选择计数的结果转换为“二进制”0/1值.0=0.非零= 1。根据我在网上看到的,在MS中,您可以将其转换为“位”,但Oracle似乎不支持这一点。

下面是我的简单示例查询(真正的查询要复杂得多)。我希望MATCH_EXISTS总是0或1,这有可能吗?

代码语言:javascript
复制
select count(*) as MATCH_EXISTS 
from MY_TABLE 
where MY_COLUMN is not null;
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-10-23 19:43:33

这应该是最快的。最多只能排一排。

代码语言:javascript
复制
SELECT COUNT(*) AS MATCH_EXISTS
FROM MY_TABLE 
WHERE MY_COLUMN IS NOT NULL
  AND rownum <= 1;
票数 6
EN

Stack Overflow用户

发布于 2015-10-23 19:45:54

如果您使用exists子句,那么对于大型表来说,这会更快,因为Oracle不需要扫描整个表。一旦有一行,它就可以停止检索它:

代码语言:javascript
复制
select count(*) as match_exists
from dual
where exists (select * 
              from my_table 
              where my_column is not null);
票数 1
EN

Stack Overflow用户

发布于 2015-10-23 19:47:46

不要做count()。为了提高性能,请使用exists

代码语言:javascript
复制
select (case when exists (select 1 as MATCH_EXISTS 
                          from MY_TABLE 
                          where MY_COLUMN is not null
                         )
              then 1 else 0
        end)
from dual;

这可以大大加快速度。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33310150

复制
相关文章

相似问题

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