Как мне просмотреть метаданные столбца в Sybase?

StackOverflow https://stackoverflow.com/questions/723115

  •  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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top