首页 > 解决方案 > 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 -> 我想要这些值的相应描述。

期望的输出

标签: db2ibm-midrangedata-dictionary

解决方案


这取决于您的数据结构。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     |

推荐阅读