如何解决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->我想要这些值的相应描述。
请注意:我对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 举报,一经查实,本站将立刻删除。