java数据库元数据。当以小写形式使用表名时,getColumns()返回空结果集,但以大写形式使用右结果集
我使用oracle 11g,并创建如下表:
create table test1(
id int,
name varchar(10),
inserttime date
)
然后我使用jdbc方法
DatabaseMetaData.getColumns(null, null, "test1", null)
并获取空的结果集。 但是当我使用
DatabaseMetaData.getColumns(null, null, "TEST1", null)
我可以得到正确的结果集
为什么?
# 1 楼答案
这是因为在内部,^{} 对^{} 数据字典视图执行查询,在该视图中,它将表名模式与
all_tab_columns.table_name
匹配按照惯例,Oracle在数据字典中以大写格式存储标识符(如此处的表名)。您可以通过在数据库中执行以下查询来验证这一点:
这里表标识符的大小写敏感度确实与直觉相反,特别是因为表标识符在Oracle SQL中不区分大小写