¿Cómo miro metadatos de columna en Sybase?
-
05-09-2019 - |
Pregunta
Tengo una lista de columnas de un compañero de trabajo me ha dado, pero estas columnas resido en diferentes tablas de la base de datos. ¿Hay algún tipo de herramienta de Sybase donde puedo consultar la tabla una columna pertenece a?
(He intentado Google-ción de este tipo de herramienta, pero sin suerte hasta ahora)
Solución
syscolumns mantiene metadatos de columna.
SELECT * FROM syscolumns donde nombre =;
La columna id en syscolumns es el id de la mesa de la columna, en 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';
obtiene todas las columnas de la tabla denominada 'foo'. El tipo = 'U' lo limita a las tablas de usuario.
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';
recibe toda columnas llamadas 'foo'.
La mayoría de versión actual de ASE utilizará sysbojects
en lugar de systables
Otros consejos
he tenido que hacer unos pequeños cambios para que funcione:
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
Puede encontrar la información para cualquier columna en:
SELECT *
FROM sys.syscolumns
Si usted quiere saber a qué tabla pertenece una columna:
SELECT cname, tname
FROM sys.syscolumns
WHERE tname IN ('col_1', 'col_2')
NOTA:. Me probar esto en Sybase ASA 9