专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Oracle管理

Oracle不认识字符串怎么处理

发布时间:2010-05-20 14:01:29 文章来源:www.iduyao.cn 采编人员:星星草
Oracle不认识字符串怎么办?
问题发现:在java中用到数据库时,需要传入用户名和密码,都是字符串的,控制台报错,我以为是java程序写错了。后来在sqlplus和sql developer写SQL语句,发现我的Oracle数据库根本就不认识带双引号的字符串!

错误 描述:
这里是表结构,oracle自带的emp表
SQL> desc emp;
Name Type      Nullable Default Comments 
-------- ------------ -------- ------- -------- 
EMPNO NUMBER(4)                           
ENAME VARCHAR2(10) Y                        
JOB   VARCHAR2(9) Y                        
MGR NUMBER(4) Y                        
HIREDATE DATE     Y                        
SAL   NUMBER(7,2) Y                        
COMM NUMBER(7,2) Y                        
DEPTNO NUMBER(2) Y   

SQL> select * from emp;
EMPNO ENAME JOB      MGR HIREDATE       SAL      COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
 7369 SMITH CLERK  7902 1980/12/17    800.00               20
 7499 ALLEN SALESMAN  7698 1981/2/20   1600.00    300.00     30
 7521 WARD SALESMAN  7698 1981/2/22   1250.00    500.00     30
 7566 JONES MANAGER  7839 1981/4/2   2975.00               20
 7654 MARTIN SALESMAN  7698 1981/9/28   1250.00   1400.00     30
 7698 BLAKE MANAGER  7839 1981/5/1   2850.00               30
 7782 CLARK MANAGER  7839 1981/6/9   2450.00               10
 7788 SCOTT ANALYST  7566 1987/4/19   3000.00               20
 7839 KING   PRESIDENT       1981/11/17   5000.00               10
 7844 TURNER SALESMAN  7698 1981/9/8   1500.00      0.00     30
 7876 ADAMS CLERK  7788 1987/5/23   1100.00               20
 7900 JAMES CLERK  7698 1981/12/3    950.00               30
 7902 FORD  ANALYST  7566 1981/12/3   3000.00               20
 7934 MILLER CLERK  7782 1982/1/23   1300.00               10
14 rows selected

如果是带双引号查询,遇到字符串就会出错:
SQL> select * from emp
  2         where ename="KING";
select * from emp
       where ename="KING"
ORA-00904: "KING": 标识符无效

如果字符串是用单引号的包住的话,就不会出错。
SQL> select * from emp
  2         where ename='KING';
EMPNO ENAME JOB      MGR HIREDATE       SAL      COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
 7839 KING   PRESIDENT       1981/11/17   5000.00               10

注:这个数据库是我新装的,以前我装的数据库,貌似都是用双引号来抱住字符串的,而不是单引号啊,由于用到jdbc编程,一般查询语句都是传入字符串,也就是String类型的进来,不可能是传入字符数组进来的,那样太费时费力啊!
------解决思路----------------------
会把 双引号内的内容,当做一个字段,你这里写的是 "KING",他就会去找这个列,其实这列不存在,就出错了

所以你要换成单引号。
------解决思路----------------------
别搞笑了,oracle那有什么双引号的字符串的说法
oracle中要表示字符串,都是把字符用单引号括起来的
如果要表示双引号是字符串的一部分,那就字符串随后就是:‘“abc”’

------解决思路----------------------
Oracle数据库的字符型数据都是用单引号‘’来表示的,没有使用双引号”“来表示字符型的值的。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: