有一张表A,里面有两个字段,a,b如果用select * form A是可以查询出来数据的,
但如果select a,b form A 则报列名无效错误!不知哪位大侠可曾遇到这样的错误,求解!拜谢!
但如果select a,b form A 则报列名无效错误!不知哪位大侠可曾遇到这样的错误,求解!拜谢!
解决方案 »
- 【oracle】刚写的一个存储过程 创建有红叉求高人指点
- 各位大虾看看如下SQL怎么写?
- 谁接触到上TB的数据。一个数据库文件mdf超过64G怎么办?
- 求助一个定时执行oracle存储过程的问题,请大侠帮忙
- ODP.NET for oracle 参数化 修改数据
- 将表的横排转换成竖派
- 什么叫存储过程
- date数据怎么表示
- oracle9i workgroup edition(10user)for NT能否双机热备用
- lunix上对oracle的基本操作及SQL语法,哪里有下载?
- 高手请教,批量美化存储过程/包?
- 64位 Oracle Application Server(OAS)在哪下载,请大虾们帮忙
scott@TBWORA> create table a("a" varchar2(20), "b" varchar2(20));表已创建。scott@TBWORA> desc a;
名称 是否为空? 类型
----------------------------------------------------------------- -------- --------------------------------------------
a VARCHAR2(20)
b VARCHAR2(20)scott@TBWORA> insert into a("a","b") values('a01','b01');已创建 1 行。scott@TBWORA> select * from a;a b
---------------------------------------- ----------------------------------------
a01 b01scott@TBWORA> select a, b from a;
select a, b from a
*
第 1 行出现错误:
ORA-00904: "B": 标识符无效
scott@TBWORA> select "a", "b" from a;a b
---------------------------------------- ----------------------------------------
a01 b01
重复的,我的数据库版本是10g
scott@TBWORA> l
1 select table_name, column_name, column_id
2 from user_tab_columns
3 where table_name='A'
4* order by column_id
scott@TBWORA> /TABLE_NAME COLUMN_NAME COLUMN_ID
------------------------------ ------------------------------ ----------
A a 1
A b 2scott@TBWORA> l
1 select table_name, column_name, column_id
2 from user_tab_columns
3 where table_name='A'
4* order by column_id
scott@TBWORA> select a, b from a;
select a, b from a
*
第 1 行出现错误:
ORA-00904: "B": 标识符无效
scott@TBWORA> select a, "B" from a;
select a, "B" from a
*
第 1 行出现错误:
ORA-00904: "B": 标识符无效
scott@TBWORA> select a, "b" from a;
select a, "b" from a
*
第 1 行出现错误:
ORA-00904: "A": 标识符无效
scott@TBWORA> select "a", "b" from a;a b
---------------------------------------- ----------------------------------------
a01 b01
大家说出来 肯定都是交流,你的代码我非常认真地看了,其实我昨天都已经在字段两端加引号了,
的确不报错,但查询出来的数据都是错的,比如:我的数据是
a b
1 2
3 4
但如果我用 select "a","b" 去查询的话,
出来的结果是:
a b
A B
A B
您的辛勤回复,我感激不尽!我尊重您的劳动成果,但也请您尊重别人!
他在指导你如何去发现问题,你也看到情况了,你创建表的时候,对于字段你使用"",这样会直接把你字段以小写形式保存到数据字典里,你 select a,b 的时候,oracle 会将字段隐式转换为大写然后在数据字典里查找,因为你的列名是以小写形式保存的,所以,会找不到列名,就出错了
问题解决了,是建表的时候,里面包含了关键字。COLUMN
谢谢大家的回复!
select "a"写成了 select 'a'
当然出来就是a了