¿Cómo puedo buscar en la columna de metadatos en Sybase?

Tengo una lista de columnas de un compañero de trabajo me ha dado, pero estas columnas residen en las diferentes tablas de la DB. ¿Hay algún tipo de herramienta en Sybase donde puedo consultar la tabla una columna pertenece?

(He probado Google-ción de este tipo de herramienta, pero sin suerte hasta el momento)

OriginalEl autor Jose Chavez | 2009-04-06

3 Kommentare

  1. 17

    syscolumns sostiene la columna de metadatos.

    select * from syscolumns donde name = ;

    La columna id en syscolumns es el identificador de la columna de la tabla, 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’ límites 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';
    

    obtiene todas las columnas con el nombre ‘foo’.

    Versión más actual de la ASE utilizará sysbojects en lugar de systables

    Gracias! Sí, esto realmente ayuda. También me encontré con un diagrama de Sybase ASE que visualiza su respuesta: download.sybase.com/pdfdocs/asg1250e/poster.pdf
    En la versión posterior de Sybase uno necesita usar sysobjects en lugar de systables
    he intentado seleccionar * de syscolumns y ninguna de las columnas de las tablas se muestran
    si usted sabe el nombre de la tabla ya sp_help tableName dará la tabla de detalles, incluyendo los nombres de columna.

    OriginalEl autor tpdi

  2. 3

    Tuve 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
    
    Supongo que usted quiere.b.nombre != ‘bar’
    Esta es la única respuesta que trabajó en mi caso.

    OriginalEl autor king conch

  3. 0

    Usted puede encontrar la información para cualquier columna en:

    SELECT * 
      FROM sys.syscolumns

    Si quieres saber a qué tabla pertenece una columna:

    SELECT cname, tname 
      FROM sys.syscolumns
     WHERE tname IN ('col_1', 'col_2')

    NOTA: puedo probar esto en Sybase ASA 9.

    OriginalEl autor Paul Vargas

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea