Как мне просмотреть метаданные столбца в Sybase?
-
05-09-2019 - |
Вопрос
У меня есть список столбцов, предоставленный мне коллегой, но эти столбцы находятся в разных таблицах базы данных.Есть ли в Sybase какой-то инструмент, с помощью которого я могу запросить таблицу, к которой принадлежит столбец?
(Я пробовал поискать в Google такой инструмент, но пока безуспешно)
Решение
syscolumns содержит метаданные столбца.
выберите * из системных столбцов , где name = ;
Столбец id в syscolumns - это идентификатор таблицы столбца в sysobjects;
select b.name as tablename, a.name as columnname
from syscolumns a join systables b on (a.id = b.id)
where b.type='U' and b.name = 'foo';
возвращает все столбцы для таблицы с именем 'foo'.Тип = 'U' ограничивает его пользовательскими таблицами.
select b.name as tablename, a.name as columnname
from syscolumns a join systables b on (a.id = b.id)
where b.type='U' and a.name = 'foo';
возвращает все столбцы с именем 'foo'.
Самая последняя версия ASE будет использовать sysbojects
вместо того , чтобы systables
Другие советы
Мне пришлось внести несколько небольших изменений, чтобы это сработало:
select b.name as tablename,
a.name as columnname
from dbo.syscolumns a
join sysobjects b on a.id = b.id
where b.type='U'
and upper(a.name) like '%FOO%' -- wildcard search for column name
and b.name = 'bar' -- exclude tables
order by b.name
Вы можете найти информацию по любому столбцу в:
SELECT *
FROM sys.syscolumns
Если вы хотите знать, к какой таблице относится столбец:
SELECT cname, tname
FROM sys.syscolumns
WHERE tname IN ('col_1', 'col_2')
ПРИМЕЧАНИЕ:Я тестирую это в Sybase ASA 9.