查找Oracle中列类型为NUMBER且具有一定精度的表

ct3nt3jp  于 2023-02-18  发布在  Oracle
关注(0)|答案(2)|浏览(199)

我需要在Oracle中查找数据类型为NUMBER且精度为小数的表(和列)。例如,我希望获取列定义为"MARKET_RATE NUMBER(4,2)"的表名,而不是仅定义为"AGE NUMBER"(不带小数精度)的列。
我不确定如何准确地点击此查询来查找此类表(列)详细信息。
问候。

k97glaaz

k97glaaz1#

您可以在user_tab_colsdba_tab_cols中使用DATA_PRECISIONDATA_SCALE(如果您有权限的话)。

select column_id,
       column_name,
       data_type, 
       data_precision,
       data_scale
from user_tab_cols col
join user_tables tab on col.table_name = tab.table_name
where data_type ='NUMBER'
and data_precision is not null and data_scale is not null

Check Demo Here

nlejzf6q

nlejzf6q2#

在上面的答案中,用户应该是表所有者才能运行查询。您还可以使用ALL_TAB_COLS表来获取用户有权访问的所有列
查询示例

SELECT 
 column_id,
       column_name,
       data_type, 
       data_precision,
       data_scale
FROM ALL_TAB_COLS 
where 
owner = 'TABLEOWNER'
and data_precision < 10
and Upper(column_name) like '%ID%'

相关问题