如何修改Oracle查询语句使其仅返回带UNIQUE约束的数值型列?
修改后的Oracle查询语句
以下是调整后的查询语句,仅返回带有UNIQUE约束、数据类型为NUMBER/BINARY_FLOAT/BINARY_DOUBLE/FLOAT且data_precision非空的列信息:
SELECT col.owner as schema_name, col.table_name, col.column_name, col.data_type, col.data_precision FROM sys.dba_tab_cols col JOIN sys.dba_tables tab ON col.owner = tab.owner AND col.table_name = tab.table_name -- 关联约束与列的映射表 JOIN sys.dba_cons_columns cc ON col.owner = cc.owner AND col.table_name = cc.table_name AND col.column_name = cc.column_name -- 关联约束表,筛选唯一约束类型 JOIN sys.dba_constraints c ON cc.owner = c.owner AND cc.constraint_name = c.constraint_name AND c.constraint_type = 'U' WHERE col.data_type IN ('NUMBER','BINARY_FLOAT', 'BINARY_DOUBLE','FLOAT') AND col.data_precision IS NOT NULL ORDER BY col.owner, col.table_name, col.column_id;
核心修改说明
- 新增
sys.dba_cons_columns关联:该视图记录了约束与对应列的绑定关系,用于定位约束关联的具体列 - 新增
sys.dba_constraints关联:通过constraint_type='U'精准筛选出唯一约束(U代表Unique) - 保持原查询的基础过滤条件,确保只返回指定数据类型且
data_precision非空的列
内容的提问来源于stack exchange,提问作者Achiral
相关产品推荐
相关产品推荐

