2015-09-09 1 views
0

J'ai remarqué un comportement étrange en travaillant avec DB2 et le SYSIBM.SYSCOLUMNS qui n'apparaît que dans une table.La requête SYSIBM.SYSCOLUMNS affiche les colonnes deux fois si j'utilise REMARQUES

C'est ma requête:

select distinct NAME, COLTYPE, LENGTH, SCALE, REMARKS from SYSIBM.SYSCOLUMNS where TBNAME='Table1'; 

Normalement, le résultat montre une fois toutes les tables.

|===================================| 
| NAME |COLTYPE|LENGTH|SCALE|REMARKS| 
|col1 | ..... |......|.....|.......| 
|col2 | ..... |......|.....|.......| 
|col3 | ..... |......|.....|.......| 
|===================================| 

Mais si j'utilise une table spécifique, appelons-le Table2, chaque colonne apparaît deux fois:

|===================================| 
| NAME |COLTYPE|LENGTH|SCALE|REMARKS| 
|col1 | ..... |......|.....|.......| 
|col1 | ..... |......|.....|.......| 
|col2 | ..... |......|.....|.......| 
|col2 | ..... |......|.....|.......| 
|col3 | ..... |......|.....|.......| 
|col3 | ..... |......|.....|.......| 
|===================================| 

Mais seulement si j'inclure le REMARKS dans le instruction_select. Si je supprime le REMARKS de ma sélection, tout fonctionne comme prévu.

Quelle pourrait être la cause de ce problème? Y a-t-il un problème avec ma requête?

+0

Quelle plate-forme et version de DB2? – Charles

+0

Mainframe et version 10.2. – Christian

Répondre

5

Vous n'avez pas considéré les schémas. Il pourrait être table2 dans le schéma A et schéma B.

EN LUW:

Personnellement, je recommande le schéma syscat afin d'interroger le catalogue. Les sysibm sont internes à DB2 et ces tables peuvent changer entre les versions.

select TABSCHEMA, TABNAME, COLNAME, TYPENAME, LENGTH, SCALEREMARKS 
from syscat.columns 
where tabname = 'TABLE2' 
1

Que contient la colonne des remarques pour chaque rangée?

Vous avez un DISTINCT dans votre requête d'origine. Puisque vous ne sélectionnez que le nom de la table, est-il possible que vous ayez la même table dans plusieurs schémas; une avec une remarque et une sans?