oracle字符串 字符,Oracle不认识字符串怎么处理

这篇博客探讨了在Oracle数据库中使用SQL查询时遇到的问题,即Oracle不识别带双引号的字符串。博主发现Oracle规定字符串需要用单引号包围,而双引号会被解析为字段名,导致查询出错。解决方案是将字符串用单引号括起。这对于使用Java JDBC进行数据库操作时需要注意,因为通常字符串参数是用双引号包围的。
摘要由CSDN通过智能技术生成

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数据库的字符型数据都是用单引号‘’来表示的,没有使用双引号”“来表示字符型的值的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值