天天看點

oracle字元串 字元,Oracle不認識字元串怎麼處理

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資料庫的字元型資料都是用單引号‘’來表示的,沒有使用雙引号”“來表示字元型的值的。