如何在SQL*Plus中显示带双引号的表名与列名?
在SQL*Plus中查看带双引号的表名和列名
方法1:查询数据字典视图
Oracle的数据字典会完整存储带双引号的对象名称(含原始大小写),直接通过以下查询即可获取:
查看当前用户下带双引号的表名(这类表名通常与大写形式不一致,比如小写或包含特殊字符):
SELECT TABLE_NAME FROM USER_TABLES WHERE TABLE_NAME != UPPER(TABLE_NAME);若表名带引号但本身是大写,上述语句无法筛选,可直接查询所有表名:
SELECT TABLE_NAME FROM USER_TABLES;查看指定表的所有列名(含带双引号的):
替换'目标表名'为你要查询的表名(若表名是带引号的小写/特殊格式,需精确匹配大小写):SELECT COLUMN_NAME FROM USER_TAB_COLUMNS WHERE TABLE_NAME = '目标表名';筛选带双引号的列可使用:
SELECT COLUMN_NAME FROM USER_TAB_COLUMNS WHERE TABLE_NAME = '目标表名' AND COLUMN_NAME != UPPER(COLUMN_NAME);
方法2:生成CREATE TABLE语句
利用DBMS_METADATA.GET_DDL函数可直接导出表的创建语句,包含所有带双引号的定义:
- 先设置SQL*Plus的显示长度,避免内容截断:
SET LONG 10000; - 执行生成语句(替换
'目标表名',若表名带引号需保留大小写,例如表是"my_table"则写成'"my_table"'):SELECT DBMS_METADATA.GET_DDL('TABLE', '目标表名') FROM DUAL;
注意事项
- 若需查看其他用户的对象,将
USER_TABLES和USER_TAB_COLUMNS替换为ALL_TABLES和ALL_TAB_COLUMNS(需对应权限),或DBA_TABLES/DBA_TAB_COLUMNS(需DBA权限)。 - 带双引号的对象名在SQL*Plus中引用时,必须用双引号包裹并精确匹配大小写,否则会报错或匹配到错误对象。
内容的提问来源于stack exchange,提问作者mempie
相关产品推荐
相关产品推荐

