Число столбцов - PullRequest
       7

Число столбцов

7 голосов
/ 03 февраля 2009

как посчитать количество столбцов в таблице в oracle?

Ответы [ 5 ]

18 голосов
/ 03 февраля 2009
SELECT count(*) FROM user_tab_columns WHERE table_name = 'FOO'

должно дать вам количество столбцов в foo. Вы можете получить совсем немного информации от USER_TAB_COLUMNS и USER_TABLES (есть также варианты ALL_ и DBA_).

8 голосов
/ 03 февраля 2009

@ Дероберт имеет хороший ответ, если вы пытаетесь сосчитать столбцы в вашей собственной таблице. Если вам нужно подсчитать столбцы в таблицах другой схемы, вам нужно использовать представление all_tab_columns. Одним из дополнительных столбцов в этом представлении является владелец таблицы. Это также полезно, когда одно и то же имя таблицы существует в нескольких схемах. Обратите внимание, что у вас должны быть права доступа к таблицам, чтобы увидеть их в представлении all_tab_columns. Запрос становится:

select count(*) from all_tab_columns where owner='BAR' and table_name='FOO';

Обратите внимание, что столбцы владелец и имя таблицы обычно пишутся в верхнем регистре.

1 голос
/ 03 февраля 2009

Если Oracle поддерживает INFORMATION_SCHEMA.COLUMNS, я бы сказал, использовать это. Но, как говорили другие, используйте представления USER_%.

Для полноты, следующая ссылка описывает, какие системы поддерживают стандарт SQL-92. Системы, которые поддерживают INFORMATION_SCHEMA

0 голосов
/ 04 марта 2014

Количество столбцов и количество строк в таблице оракулов:

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 
0 голосов
/ 04 марта 2014

Старый вопрос - но недавно я нуждался в этом вместе с количеством строк ... вот запрос для обоих - отсортированный по числу строк

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; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...