您的位置:首页 > 数据库 > Oracle

Oracle之表/视图名称大小写问题-yellowcong

2017-11-13 21:40 316 查看
Oracle是区分大小写的,建立表的时候,虽然我们的名称都是小写,但是都会被转化为大写的表,还有查询的时候,直接查询表,无论大小写,都是可以查询到数据,当把表名称作为查询的条件的情况(简单来说,就是表名称放在双引号的情况),是区分大小写的。

大小写原则

-- 虽然写的时候是有大写和小写,但是在数据库里面是不区分的。 到数据库都变成了大写了。。
CREATE TABLE TableName(id number);

-- 直接查询的时候,
select * from tablename;
SELECT * FROM TABLENAME;
SELECT * FROM TableName;

-- 这下面三种方式都能查询出表信息
select * from dual
select * from DUAL
select * from "DUAL"

-- 这种方式就查询不到表的信息了
select * from "dual"

-- 下面创建表的方式不常用,比较的别扭
-- 如果创建表的时候是这样写的,那么就必须严格区分大小写
CREATE TABLE "TableName"("id" number);

-- 不仅要区分大小写而且要加双引号,以便和上面的第三种查询方式区分开。
SELECT * FROM "TableName";


例子

表大写的情况

这个时候,我们将表
VIEW_CONTRACT_NUMBER
大写,然后可以查出数据来

SELECT COL.COLUMN_NAME,
COL.COMMENTS,
case TAB.DATA_TYPE
when 'NUMBER' then
decode(sign(TAB.DATA_SCALE), 0, 'NUMBER', 'FLOAT')
else
TAB.DATA_TYPE
end as DATA_TYPE,
DECODE(TAB.DATA_TYPE,
'NUMBER',
TAB.DATA_PRECISION + TAB.DATA_SCALE,
TAB.DATA_LENGTH) AS DATA_LENGTH
FROM USER_COL_COMMENTS COL, USER_TAB_COLUMNS TAB
WHERE COL.TABLE_NAME = 'VIEW_CONTRACT_NUMBER'
AND TAB.TABLE_NAME = COL.TABLE_NAME
AND TAB.COLUMN_NAME = COL.COLUMN_NAME




小写的情况

当我们小写的情况,就查询不到数据了

SELECT COL.COLUMN_NAME,
COL.COMMENTS,
case TAB.DATA_TYPE
when 'NUMBER' then
decode(sign(TAB.DATA_SCALE), 0, 'NUMBER', 'FLOAT')
else
TAB.DATA_TYPE
end as DATA_TYPE,
DECODE(TAB.DATA_TYPE,
'NUMBER',
TAB.DATA_PRECISION + TAB.DATA_SCALE,
TAB.DATA_LENGTH) AS DATA_LENGTH
FROM USER_COL_COMMENTS COL, USER_TAB_COLUMNS TAB
WHERE COL.TABLE_NAME = 'view_contract_number'
AND TAB.TABLE_NAME = COL.TABLE_NAME
AND TAB.COLUMN_NAME = COL.COLUMN_NAME


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: