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)

¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top