Question

J'ai une liste de colonnes un collègue a donné à moi, mais ces colonnes résident dans différents tableaux de la DB. Y at-il une sorte d'outil dans Sybase où je peux interroger la table une colonne appartient?

(je l'ai essayé Google-ing pour ce genre d'outil, mais pas de chance jusqu'à présent)

Était-ce utile?

La solution

syscolumns détient les métadonnées de colonne.

select * from syscolumns où name =;

La colonne id dans syscolumns est l'identifiant de la table de la colonne, dans 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';

obtient toutes les colonnes de la table nommée « foo ». Le type = limites 'U' elle à des tables utilisateur.

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';

obtient toutes les colonnes nommées 'foo'.

La version la plus actuelle de l'ASE utilisera sysbojects au lieu de systables

Autres conseils

Je devais faire quelques petits changements pour que cela fonctionne:

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

Vous pouvez trouver les informations pour une colonne:

SELECT * 
  FROM sys.syscolumns

Si vous voulez savoir à quelle table une colonne appartient:

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

NOTE:. Je tester cela dans Sybase ASA 9

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top