使用SQL Developer获取列大小时出现问题
我试图编写一个查询,返回数据库中特定表中的列大小 我使用的是SQL开发人员环境,我是新手 我已经尝试了这个简单的代码,并将我在互联网上找到的应用于此:使用SQL Developer获取列大小时出现问题,sql,oracle,Sql,Oracle,我试图编写一个查询,返回数据库中特定表中的列大小 我使用的是SQL开发人员环境,我是新手 我已经尝试了这个简单的代码,并将我在互联网上找到的应用于此: CREATE TABLE tab1 ( col1 VARCHAR2(15) PRIMARY KEY, col2 Number(4) NOT NULL) select data_type, data_length from user_tab_columns where table_name
CREATE TABLE tab1 (
col1 VARCHAR2(15) PRIMARY KEY,
col2 Number(4) NOT NULL)
select data_type, data_length
from user_tab_columns
where table_name = 'tab1'
and column_name = 'col1';
我希望我的第二个查询得到这个:VARCHAR2
和15
但我明白了:
no data found
你知道我做错了什么吗?你应该使用大写的标识符:
select data_type, data_length
from user_tab_columns
where table_name = UPPER('tab1') -- 'TAB1'
and column_name = UPPER('col1'); -- 'COL1'
您可以使用带引号或不带引号的标识符来命名任何数据库对象。但是,数据库名称、全局数据库名称和数据库链接名称始终不区分大小写,并且存储为大写。如果将这些名称指定为带引号的标识符,则引号将自动忽略
真是太棒了!!谢谢大家!!
下一个问题见:D尝试
'TAB1'
和'COL1'
(使用大写字母)。除非表名和/或列名用双引号括起来(这是一种糟糕的做法),否则名称不区分大小写。但是,当写入字典表时,它们是用大写字母编写的,这就是查询字典表时必须使用它们的方式。在硬编码值周围使用upper()
似乎太多了-为什么不简单地编写'TAB1'
和'COL1'
?这就是你查询目录表的方式吗?@mathguy,品味问题。它也可以是大写的字符串文字。