如何计算oracle中表格中的列数?
答案 0 :(得分:18)
SELECT count(*) FROM user_tab_columns WHERE table_name = 'FOO'
应该给你foo中的列数。您可以从USER_TAB_COLUMNS
和USER_TABLES
获取相当多的信息(还有ALL_
和DBA_
个变体。
答案 1 :(得分:8)
@derobert有一个很好的答案,只要你试图计算你拥有的表中的列。如果需要计算其他模式表中的列,则需要使用all_tab_columns视图。此视图中的其他列之一是表所有者。当多个模式中存在相同的表名时,这也很有用。请注意,您必须具有表的权限才能在all_tab_columns视图中查看它们。查询变为:
select count(*) from all_tab_columns where owner='BAR' and table_name='FOO';
请注意,owner和tablename列通常是大写的。
答案 2 :(得分:1)
如果Oracle支持INFORMATION_SCHEMA.COLUMNS,我会说使用它。但正如其他人所说,使用USER_%视图。
为完整起见,以下链接描述了哪些系统支持SQL-92标准。 Systems that support INFORMATION_SCHEMA
答案 3 :(得分:0)
老问题 - 但我最近需要这个以及行计数...这里是两个查询 - 按行数desc排序:
SELECT t.owner,
t.table_name,
t.num_rows,
Count(*)
FROM all_tables t
LEFT JOIN all_tab_columns c
ON t.table_name = c.table_name
WHERE num_rows IS NOT NULL
GROUP BY t.owner,
t.table_name,
t.num_rows
ORDER BY t.num_rows DESC;
答案 4 :(得分:0)
oracle表中的列数和行数:
SELECT u.table_name Table_Name,
Count(*) Table_Columns,
u.num_rows Table_Rows
FROM user_tab_columns c,
user_tables u
WHERE u.table_name = c.table_name
GROUP BY u.table_name,
u.num_rows