获取Oracle表中字段的注释信息

举报
福州司马懿 发表于 2025/08/14 10:53:12 2025/08/14
【摘要】 在Oracle数据库中,字段(列)的注释存储在数据字典视图USER_COL_COMMENTS(当前用户)或ALL_COL_COMMENTS(有权限的所有表)中。以下是获取字段注释的方法: 1. 获取特定表中所有字段的注释SELECT a.table_name, a.column_name, a.data_type, a.data_length, a.nulla...

在Oracle数据库中,字段(列)的注释存储在数据字典视图USER_COL_COMMENTS(当前用户)或ALL_COL_COMMENTS(有权限的所有表)中。以下是获取字段注释的方法:

1. 获取特定表中所有字段的注释

SELECT 
    a.table_name,
    a.column_name,
    a.data_type,
    a.data_length,
    a.nullable,
    b.comments
FROM 
    user_tab_columns a
LEFT JOIN 
    user_col_comments b ON a.table_name = b.table_name AND a.column_name = b.column_name
WHERE 
    a.table_name = 'YOUR_TABLE_NAME'
ORDER BY 
    a.column_id;

2. 获取所有TB_打头表的字段注释

SELECT 
    a.table_name,
    a.column_name,
    a.data_type,
    a.data_length,
    a.nullable,
    b.comments
FROM 
    user_tab_columns a
LEFT JOIN 
    user_col_comments b ON a.table_name = b.table_name AND a.column_name = b.column_name
WHERE 
    a.table_name LIKE 'TB\_%' ESCAPE '\'
ORDER BY 
    a.table_name, a.column_id;

3. 获取表注释和字段注释(完整信息)

SELECT 
    t.table_name,
    tc.comments AS table_comment,
    c.column_name,
    c.data_type,
    c.data_length,
    c.data_precision,
    c.data_scale,
    c.nullable,
    cc.comments AS column_comment
FROM 
    user_tables t
LEFT JOIN 
    user_tab_comments tc ON t.table_name = tc.table_name
JOIN 
    user_tab_columns c ON t.table_name = c.table_name
LEFT JOIN 
    user_col_comments cc ON t.table_name = cc.table_name AND c.column_name = cc.column_name
WHERE 
    t.table_name LIKE 'TB\_%' ESCAPE '\'
ORDER BY 
    t.table_name, c.column_id;

4. 使用ALL_ views查看有权限的所有表

SELECT 
    a.owner,
    a.table_name,
    a.column_name,
    b.comments
FROM 
    all_tab_columns a
LEFT JOIN 
    all_col_comments b ON a.owner = b.owner AND a.table_name = b.table_name AND a.column_name = b.column_name
WHERE 
    a.table_name LIKE 'TB\_%' ESCAPE '\'
    -- AND a.owner = 'SCHEMA_NAME'  -- 可选:指定特定模式
ORDER BY 
    a.owner, a.table_name, a.column_id;

5. 动态生成查看注释的SQL语句

如果需要为多个表快速生成查看注释的SQL,可以使用:

SELECT 
    'SELECT ''' || table_name || ''' AS table_name, column_name, comments FROM user_col_comments WHERE table_name = ''' || table_name || ''' ORDER BY column_id;' AS sql_statement
FROM 
    user_tables
WHERE 
    table_name LIKE 'TB\_%' ESCAPE '\';

执行后会生成一系列SQL语句,可以复制出来逐个执行查看每个表的字段注释。

注意事项

  1. 如果字段没有设置注释,comments列将为NULL
  2. 确保你有足够的权限查询这些数据字典视图
  3. 对于分区表,可能需要查询USER_PART_KEY_COLUMNS等额外视图获取分区键信息
  4. 要添加或修改注释,可以使用COMMENT ON COLUMN语句
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。