DB2(AS400/i系列)列值说明

DB2(AS400/i系列)列值说明,db2,ibm-midrange,data-dictionary,Db2,Ibm Midrange,Data Dictionary,我在网上找到了一个查询,它可以帮助我获得所有的列名和列描述,我已经粘贴在下面了 Select SYSTEM_TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, varchar(COLUMN_TEXT, 50) As COLUMN_DESC From QSYS2.syscolumns WHERE TABLE_NAME = 'xxxxxx' AND SYSTEM_TABLE_SCHEMA = 'yyyyyy' 是否有提供列值说明的查询?我附上下面所需的样本输出。[Item

我在网上找到了一个查询,它可以帮助我获得所有的列名和列描述,我已经粘贴在下面了

Select
SYSTEM_TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, varchar(COLUMN_TEXT, 50) As COLUMN_DESC
From QSYS2.syscolumns
WHERE TABLE_NAME = 'xxxxxx' AND SYSTEM_TABLE_SCHEMA = 'yyyyyy'
是否有提供列值说明的查询?我附上下面所需的样本输出。[Item Code]列有三个值:A、B、C->I需要这些值的相应说明


这取决于数据的结构。SQL不知道代码值的描述。这是数据库中包含的数据。因此,如果您有一个包含代码描述的表,那么您可以通过联接获得它。如果没有这样的表,则无法获取该信息。下面是一个例子,说明这可能对您有用

create table master (
  id       integer primary key,
  name     varchar(128) not null,
  code     varchar(10) not null);

create table codes (
  id           varchar(10) primary key,
  description  varchar(128) not null);

insert into master 
  values (1, 'test1', 'A'),
         (2, 'test2', 'B'),
         (3, 'test3', 'C'),
         (4, 'test4', 'A'),
         (5, 'test5', 'B');

insert into codes
  values ('A', 'Code 1'),
         ('B', 'Code 2'),
         ('C', 'Code 3');

SELECT master.id, master.name, master.code, codes.description
FROM master 
JOIN codes on master.code = codes.id;

|ID|NAME |CODE|DESCRIPTION|
|--|-----|----|-----------|
|1 |test1|A   |Code 1     |
|2 |test2|B   |Code 2     |
|3 |test3|C   |Code 3     |
|4 |test4|A   |Code 1     |
|5 |test5|B   |Code 2     |

如果数据库构建正确,那么在表“XXXXX”和jmarkmurphy提供的“code”表之间应该定义一个引用(又名外键)约束

有多种方法可以显示这种限制

IBM i

  • qsys2.syscst
  • qsys2.syscstcol
  • qsys2.syscstdep
  • qsys2.syskeycst
ODBC/JDBC

  • sysibm.SQLFOREIGNKEYS
ANS/ISO

  • qsys2.1参考_约束
不幸的是,许多Db2 for i上的遗留应用程序没有定义此类约束

“代码”表也可能不存在。而且描述是在各种程序中简单地硬编码的