【问题标题】:How to get count of all columns of a table, which are not null using PL/SQL?如何使用 PL/SQL 获取表中所有非空列的计数?
【发布时间】:2014-07-14 19:28:18
【问题描述】:

是否有任何 PL/SQL 函数,它允许传递表名并返回不包含空值的所有列的计数?

我有大量的列,不想查询每一列。我是 PL/SQL 新手,非常感谢您的帮助。

【问题讨论】:

  • 我试过这个查询,但它没有给出正确的结果。使用下面的查询,表的总数是错误的。选择 t.table_name,T.NUM_ROWS,c.column_name,c。 num_nulls, T.NUM_ROWS - c.num_nulls num_not_nulls, c.data_type, c.last_analyzed from all_tab_cols c join sys.all_all_tables t on C.TABLE_NAME = t.table_name where c.table_name like 'EXT%' and c.nullable ='Y ' group by t.table_name, T.NUM_ROWS, c.column_name, c.num_nulls, c.data_type, c.last_analyzed order by t.table_name, c.column_name;
  • 而不是在评论中发布查询,您应该编辑您的问题并将其添加到格式化中,这样它更具可读性。
  • 我使用上述查询得到了结果..感谢您的回复..总行数不匹配,可以通过收集表上的统计信息来解决它
  • 如果我理解正确,您已经可以解决您的问题。在这种情况下,您可能需要post an answer for your question。不过请注意,您至少需要 15 声望。如果其他人面临同样的问题,这会有所帮助。
  • 由于声誉极低,我无法发布答案。我之前发布的上述查询解决了我的问题。

标签: css plsql count multiple-columns


【解决方案1】:

作为对问题的评论,解决此问题的一种方法是以下查询:

SELECT t.table_name,
       t.num_rows,
       c.column_name,
       c.num_nulls,
       t.num_rows - c.num_nulls num_not_nulls,
       c.data_type,
       c.last_analyzed
FROM all_tab_cols c
JOIN sys.all_all_tables t ON c.table_name = t.table_name
WHERE c.table_name LIKE 'EXT%'
  AND c.nullable = 'Y'
GROUP BY t.table_name,
         t.num_rows,
         c.column_name,
         c.num_nulls,
         c.data_type,
         c.last_analyzed
ORDER BY t.table_name,
         c.column_name

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-05
    • 2019-02-17
    • 2019-08-12
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 2011-01-05
    相关资源
    最近更新 更多