Что эквивалентно «описать таблицу» в SQL Server? - PullRequest
281 голосов
/ 26 ноября 2008

У меня есть база данных SQL Server, и я хочу знать, какие у нее есть столбцы и типы. Я бы предпочел сделать это с помощью запроса, а не с помощью графического интерфейса, такого как Enterprise Manager. Есть ли способ сделать это?

Ответы [ 15 ]

2 голосов
/ 09 июля 2014

Вы можете использовать sp_help 'TableName'

1 голос
/ 11 марта 2019

SQL Server, эквивалентный команде Oracle describe, - это сохраненный процесс sp_help

Команда describe предоставляет информацию об именах столбцов, типах, длине и т. Д.

Предположим, что в SQL Server вы хотите описать таблицу 'mytable' в схеме 'myschema' в базе данных 'mydb', вы можете сделать следующее:

USE mydb;
exec sp_help 'myschema.mytable';
1 голос
/ 24 января 2013

Проблема с этими ответами в том, что вам не хватает ключевой информации. Хотя это немного запутанно, это быстрая версия, которую я придумал, чтобы убедиться, что она содержит ту же информацию, что и MySQL Describe.

Select SC.name AS 'Field', ISC.DATA_TYPE AS 'Type', ISC.CHARACTER_MAXIMUM_LENGTH AS 'Length', SC.IS_NULLABLE AS 'Null', I.is_primary_key AS 'Key', SC.is_identity AS 'Identity'
From sys.columns AS SC 
LEFT JOIN sys.index_columns AS IC
ON IC.object_id = OBJECT_ID('dbo.Expenses') AND 
IC.column_id = SC.column_id
LEFT JOIN sys.indexes AS I 
ON I.object_id = OBJECT_ID('dbo.Expenses') AND 
IC.index_id = I.index_id
LEFT JOIN information_schema.columns ISC
ON ISC.TABLE_NAME = 'Expenses'
AND ISC.COLUMN_NAME = SC.name
WHERE SC.object_id = OBJECT_ID('dbo.Expenses')
0 голосов
/ 01 сентября 2018

использование

SELECT COL_LENGTH('tablename', 'colname')

Ни одно другое решение не помогло мне.

0 голосов
/ 02 декабря 2015
CREATE PROCEDURE [dbo].[describe] 
( 
@SearchStr nvarchar(max) 
) 
AS 
BEGIN 
SELECT  
    CONCAT([COLUMN_NAME],' ',[DATA_TYPE],' ',[CHARACTER_MAXIMUM_LENGTH],' ', 
    (SELECT CASE [IS_NULLABLE] WHEN 'NO' THEN 'NOT NULL' ELSE 'NULL' END),
    (SELECT CASE WHEN [COLUMN_DEFAULT] IS NULL THEN '' ELSE CONCAT(' DEFAULT ',[COLUMN_DEFAULT]) END)
    ) AS DESCRIPTION
    FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME LIKE @SearchStr
END 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...