DB2(AS400/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'

是否有提供列值描述的查询?我在下面附上一个想要的输出样本。列[项目代码]有三个值:A、B、C->我想要这些值的相应描述。

期望输出

这取决于数据的结构。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'和'codes'表之间应该定义一个引用(也称为外键(约束jmarkmurphy提供了一个示例。

有各种系统目录将显示该约束。

IBM i

  • qsys2.syscst
  • qsys2.syscscol
  • qsys2.syscstdep
  • qsys2.syskeycst

ODBC/JDBC

  • sysibm.SQLFOREIGNKEYS

ANS/ISO

  • qsys2.REFERENTIAL_CONSTRAINTS

不幸的是,Db2fori上的许多遗留应用程序没有定义这样的约束。

也有可能的是;代码";表也不存在。而且这种描述只是在各种程序中进行了硬编码。

相关内容

  • 没有找到相关文章

最新更新