我在网上找到了一个查询,它可以帮助我获得所有列名以及列描述,我已经将其粘贴在下面。
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上的许多遗留应用程序没有定义这样的约束。
也有可能的是;代码";表也不存在。而且这种描述只是在各种程序中进行了硬编码。