zoukankan      html  css  js  c++  java
  • [Oracle] “表中有数据,但select count(*)的结果为0”问题的解决办法

    一、问题

    今天遇到了一个神奇的问题——表中有数据,但select count(*)的结果为0。

    这个问题最初的表现形式是“查询报表没有分页”。
    最开始还以为是java端的问题。后来才发现,查分页的sql语句是返回0的。
    随后将该sql语句放到PLSQL里运行,发现也是返回0条。

    数据库版本是 Oracle 11.1.0.6。

    试了好几个搜索引擎,但网上找不到类似情况。

    二、山穷水尽疑无路

    首先确认一下该表是否有数据——

    select * from mytable
    

    可看到该表(mytable)确实有数据。

    随后查询条数,发现该语句返回0条。

    select count(*) from mytable
    

    更换count方式,还是返回0条。

    select count(1) from mytable
    select count(id) from mytable
    

    三、柳暗花明又一村

    随后发现加上条件时,能查到条数。

    select count(*) from mytable where id<10
    

    难道要写上where才行?
    那我要查全表记录数该怎么办?

    于是尝试了这种写法做恒真判断,但发现还是返回0条——

    select count(*) from mytable where 1=1
    

    看来是被数据库自动优化查询语句了。

    又想了一下,干脆改为主键非空判断吧,这个也是恒真的。

    select count(*) from mytable where not id is null
    

    这个能正常的查到记录数。

  • 相关阅读:
    "#"
    网络请求
    iOS_正则表达式判断手机型号、邮箱、手机号、身份证、昵称、密码等
    程序员
    js交互
    android 性能优化
    Android 开源的项目框架
    Android 开源框架案例
    Android Listview上拉刷新加载框架
    android 上传文件到服务器FIP
  • 原文地址:https://www.cnblogs.com/zyl910/p/oracle_count_result0.html
Copyright © 2011-2022 走看看