微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

DB2AS400 / i系列列值说明

如何解决DB2AS400 / i系列列值说明

我在网上找到了一个查询,该查询可以帮助我获取所有列名以及下面粘贴的列说明。

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->我想要这些值的相应描述。

Desired Output

请注意:我对DB2和StackOverflow都比较熟悉,如果上述问题有任何错误,请提前对不起。提供的任何帮助将不胜感激。

解决方法

这取决于您的数据结构。 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',(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的“代码”表之间应定义一个参照(aka外键)约束。

有各种system catalogs将显示该约束。
IBM i

  • qsys2.syscst
  • qsys2.syscstcol
  • qsys2.syscstdep
  • qsys2.syskeycst

ODBC / JDBC

  • sysibm.SQLFOREIGNKEYS

ANS / ISO

  • qsys2.REFERENTIAL_CONSTRAINTS

不幸的是,我在Db2上的许多旧版应用程序都没有定义此类约束。

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。