Как найти количество столбцов какой-либо таблицы в какой-либо базе данных от ведущей базы данных SQL-сервера?

когда использование varchar оценивает потребности SQL Server дополнительные 2 байта за строку для хранения некоторой информации о том столбце, тогда как при использовании символа этому не нужно это поэтому если Вы

8
задан user366312 5 December 2009 в 13:59
поделиться

3 ответа

Это может незначительно отличаться в зависимости от версии SQL Server, но это будет работать в 2005 году:

SELECT
     COUNT(*)
FROM
     <database name>.sys.columns
WHERE
     object_id = OBJECT_ID('<database name>.<owner>.<table name>')

В 2000 году:

SELECT
     COUNT(*)
FROM
     <database name>.sysobjects o
INNER JOIN <database name>.syscolumns c ON
     c.id = o.id
WHERE
     o.name = '<table name>'

Если у вас может быть несколько таблиц с одинаковым точным именем таблицы под разными владельцами вам нужно будет это учесть. Я забываю имя столбца в sysobjects, чтобы взглянуть на него сверху вниз.

ОБНОВЛЕНИЕ ДЛЯ НОВЫХ ВЕРСИЙ SQL Server и соответствия ANSI:

SELECT COUNT(*)
FROM
    <database name>.INFORMATION_SCHEMA.COLUMNS
WHERE
    TABLE_SCHEMA = '<table schema>' AND
    TABLE_NAME = '<table name>'
17
ответ дан 5 December 2019 в 05:03
поделиться

Вы можете (и должны) это сделать - постарайтесь избегать использования представления «sysobjects» - оно больше не поддерживается и может быть удалено в SQL Server 2008 R2 или более поздних версиях.

Вместо этого, используйте представление каталога "sys" в базе данных:

SELECT COUNT(*) 
FROM yourdatabase.sys.columns
WHERE object_id = OBJECT_ID('yourdatabase.dbo.tablename')

Это должно помочь, и это, вероятно, самый простой и быстрый способ сделать это.

7
ответ дан 5 December 2019 в 05:03
поделиться

Как насчет

select count(*) from <database name.information_schema.columns where table_name = '<table_name>'
6
ответ дан 5 December 2019 в 05:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: