我可以将SELECT输出与Oracle中的整数进行比较吗?

时间:2017-05-25 05:21:04

标签: sql oracle function select subquery

有段时间我试图运行看起来像这样的

的Oracle sql查询
...
OR
(SELECT COUNT(fieldname)
 FROM MYTABLE
 WHERE -- SOME LOGIC HERE --
                             ) > 0
OR
(SELECT COUNT...) = 1
AND
(SELECT COUNT)...) = 5

当我只选择括号内的代码并执行它时,它显示56为唯一结果。但是在选择所有表达式时,它在最后一行报告了一个有>运算符的错误。

对我来说Oracle是一个新东西,我不能安装它来测试它,但我认为这是因为Oracle不允许你将表与一个整数进行比较,即使它只有一行。使用标量函数可以解决它吗?该功能将如何实施?我需要从单个单元格中提取值吗?

同样请注意,我实际拥有的是一个CASE条款,ORAND与计算SELECT相关联,并与上面的数字进行比较。

感谢。

2 个答案:

答案 0 :(得分:0)

您无法以这种方式检查查询结果。 如果要检查count的结果是否有一些值,可以使用PLSQL块:

declare
    vCount number;
begin
    select count(*)
    into vCount
    from yourTable
    where ...;
    --
    if vCount > 0 then
        ... 
    end if;
end;

...或像这样的简单查询:

select case
        when (select count(*) from yourTable where ...) > 0
            then 'More than 0'
            else '0'
       end
from dual       

答案 1 :(得分:0)

没有上下文,给你一个确定的答案有点困难。也许-- SOME LOGIC HERE --代表一个相关的子查询,在这种情况下你可以这样做:

select *
from another_table
where exists
    (SELECT null
     FROM MYTABLE
     WHERE -- SOME LOGIC HERE --
                                 ) 

子查询中的count(*)是不必要的。您只是检查子查询结果集中是否存在至少一条记录,因此您不需要知道很多记录。