我试过了:
select * from user_tab_comments;
它返回3列“TABLE_NAME”,“TABLE_TYPE”和“COMMENTS”,但“TABLE_NAME”列类似于“加密”,我需要清晰的表名:
TABLE_NAME TABLE_TYPE COMMENTS
BIN$IN1vjtqhTEKcWfn9PshHYg==$0 TABLE Résultat d'intégration d'une photo numérisée
BIN$PUwG3lb3QoazOc4QaC1sjw==$0 TABLE Motif de fin d'agrément de maître de stage
当我使用“select * from user_tables;”时TABLE_NAME没有“加密”。
答案 0 :(得分:20)
由于10g Oracle在发出DROP TABLE语句时不会立即删除表。而是将它们重命名为BIN$IN1vjtqhTEKcWfn9PshHYg==$0
,并将它们放入回收站。这允许我们恢复我们并不意味着丢弃的表。 Find out more
回收站中的表仍然是表,因此它们显示在ALL_TABLES和类似视图中。因此,如果您只想查看仅与实时(非删除)表相关的注释,则需要按表名进行筛选:
select * from all_tab_comments
where substr(table_name,1,4) != 'BIN$'
/
“我无法相信没有一个标志列,所以你可以做,is_recycled = 0或其他什么。”
你是对的,这将是不可思议的。所以我检查了文档,事实证明Oracle 10g在USER_ / ALL_ / DBA_TABLES视图中添加了一个名为DROPPED的列。
select tc.*
from all_tab_comments tc
join all_tables t
on tc.owner = t.owner
and tc.table_name = t.table_name
where t.dropped = 'NO'
/
结帐the documentation。显然,需要加入ALL_TABLES视图需要更多的输入而不是过滤名称,因此根据我们的需要,保留原始的WHERE子句可能更容易。
答案 1 :(得分:0)
从USER_TAB_COMMENTS中选择t.table_name,t.comments t WHERE TABLE_NAME ='SS_DEPT';