Используйте запрос для доступа к описанию столбца в SQL
Я пытаюсь получить доступ к свойствам описания столбцов, используя INFORMATION_SCHEMA
Я создал этот запрос в прошлом, чтобы получить имя столбца, но я не могу понять, как получить описание столбца
SELECT COLUMN_NAME AS Output, ORDINAL_POSITION
FROM INFORMATION_SCHEMA.COLUMNS
WHERE (TABLE_NAME = @Tablename) AND (ORDINAL_POSITION = @Location)
![Screen shot]()
Здесь указано описание свойств поля
Ответы
Ответ 1
Если по описанию вы имеете в виду "Описание", отображаемое в SQL Management Studio в режиме разработки, вот оно:
select
st.name [Table],
sc.name [Column],
sep.value [Description]
from sys.tables st
inner join sys.columns sc on st.object_id = sc.object_id
left join sys.extended_properties sep on st.object_id = sep.major_id
and sc.column_id = sep.minor_id
and sep.name = 'MS_Description'
where st.name = @TableName
and sc.name = @ColumnName
Ответ 2
exec sp_columns @Tablename... Это системная хранимая процедура, которая даст вам информацию.
Кроме этого, здесь есть сообщение с большим количеством хорошей информации о представлениях SCHEMA: Что такое "описать таблицу" в SQL Server?
Ответ 3
Функция fn_listextendedproperty
сделает то, что вы ищете (называемое sys.fn_listextendedproperty
для SQL Server 2012 на MSDN).
Синтаксис выглядит следующим образом:
fn_listextendedproperty (
{ default | 'property_name' | NULL }
, { default | 'level0_object_type' | NULL }
, { default | 'level0_object_name' | NULL }
, { default | 'level1_object_type' | NULL }
, { default | 'level1_object_name' | NULL }
, { default | 'level2_object_type' | NULL }
, { default | 'level2_object_name' | NULL }
)
Пример использования: перечисляет расширенные свойства для всех столбцов таблицы ScrapReason
в схеме Production
USE AdventureWorks2012;
GO
SELECT objtype, objname, name, value
FROM fn_listextendedproperty (NULL, 'schema', 'Production', 'table', 'ScrapReason', 'column', NULL);
GO
sp_helptext
не будет работать, поскольку он не может использоваться для таблиц по TechNet.
Отображает определение пользовательского правила, значение по умолчанию, незашифрованное Хранимая процедура Transact-SQL, пользовательская функция Transact-SQL, триггер, вычисленный столбец, ограничение CHECK, представление или системный объект такой как хранимая процедура системы.
sp_columns
не возвращает поле sys.extended_properties.value
, которое вы ищете.
fn_listextendedproperty
, возможно, легче работать с и более общим, чем запрос в принятом ответе.
Ответ 4
Вы ищете информацию в представлении sys.extended_properties?
fooobar.com/questions/327861/...
Ответ 5
Если вы специально хотите использовать INFORMATION_SCHEMA (как я был), следующий запрос должен помочь вам получить поле описания столбца:
SELECT COLUMN_NAME AS [Output]
,ORDINAL_POSITION
,prop.value AS [COLUMN_DESCRIPTION]
FROM INFORMATION_SCHEMA.TABLES AS tbl
INNER JOIN INFORMATION_SCHEMA.COLUMNS AS col ON col.TABLE_NAME = tbl.TABLE_NAME
INNER JOIN sys.columns AS sc ON sc.object_id = object_id(tbl.table_schema + '.' + tbl.table_name)
AND sc.NAME = col.COLUMN_NAME
LEFT JOIN sys.extended_properties prop ON prop.major_id = sc.object_id
AND prop.minor_id = sc.column_id
AND prop.NAME = 'MS_Description'
WHERE tbl.TABLE_NAME = @TableName