【发布时间】: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 的表中。我不能评论结果“太小”,因为第一个查询的逻辑似乎是合理的?