【问题标题】:I'm trying to search through db and count all data items under specific column name我正在尝试搜索数据库并计算特定列名下的所有数据项
【发布时间】:2025-12-29 22:30:12
【问题描述】:

我正在尝试对列名“TXN”下的数据项进行计数

试图搜索数据库中的所有表

我试过了:

SELECT COUNT (*) FROM all_tab_columns WHERE OWNER='RGSWKF_PRGM' where COLUMN_NAME like '%TXN%';

但我得到了错误:

ORA-00904: "COLUMN_NAME": invalid identifier
00904. 00000 -  "%s: invalid identifier"   

在网上搜索了其他方法后,偶然发现了一个案例:

SELECT COUNT (case when COLUMN_NAME like '%TXN%') FROM all_tab_columns WHERE OWNER='RGSWKF_PRGM'; 

但我得到了:

ORA-00905: missing keyword
00905. 00000 -  "missing keyword"

您知道我在上面的陈述中哪里出错了吗?还是我接近这个完全错误?

对 SQL 相当陌生,我正在尝试浏览 oracle 数据字典,但没有找到任何东西。

【问题讨论】:

  • 对于您的第一个查询,将第二个 WHERE 替换为 AND。
  • 对于您的第二个查询,将 COUNT 更改为 SUM 并在 '%TXN%' 之后和右括号之前添加 THEN 1 END。
  • @RichardHansell 它带回了一个结果,但它似乎太小了,所以逻辑上有些问题。如果我尝试仅在一个表中搜索该列名下的项目,例如:SELECT SUM (case when COLUMN_NAME like '%TXN%' THEN 1 END) FROM field_selection_rule;我得到: ORA-00904: "COLUMN_NAME": invalid identifier 00904. 00000 - "%s: invalid identifier"
  • ORA-00904 表示 COLUMN_NAME 不存在于名为 field_selection_rule 的表中。我不能评论结果“太小”,因为第一个查询的逻辑似乎是合理的?

标签: sql oracle count case


【解决方案1】:

在第一个查询中,您有两个 WHERE 关键字。将第二个 WHERE 替换为 AND:

SELECT COUNT (*)
  FROM all_tab_columns
    WHERE owner='RGSWKF_PRGM' AND column_name LIKE '%TXN%';

【讨论】: