空字串和空格字串在informix和oralce 的差異
informix:操作如下:
> CREATE TABLE tt ( c1 int,c2 VARCHAR(8),UNIQUE (c1,c2) CONSTRAINT u_tt );
Table created.
> insert into tt(c1,c2) values(1,' '); -- 兩個空格,' '被解釋為''
1 row(s) inserted.
> insert into tt(c1,c2) values(1,' '); --一個空格,' '被解釋為'',所以出錯
268: Unique constraint (informix.u_tt) violated.
100: ISAM error: duplicate value for a record with unique key.
Error in line 1
Near character position 33
> insert into tt(c1) values(2);
1 row(s) inserted.
> select * from tt;
c1 c2
1
2
2 row(s) retrieved.
> select * from tt where c2 ='';
c1 c2
1
1 row(s) retrieved.
> select * from tt where c2 = ' '; --一個空格' '被解釋為''
c1 c2
1
1 row(s) retrieved.
> select * from tt where c2 = ' '; --二個空格' '被解釋為''
c1 c2
1
1 row(s) retrieved.
> select * from tt where c2 is null;
c1 c2
2
1 row(s) retrieved.
> select c1,length(c2) from tt;
c1 (expression)
1 0
2
2 row(s) retrieved.
>
可見informix 把 '' 與 ' ' 與 ' ' 是同等對待,將其看成''
oracle:
操作如下:
SQL> CREATE TABLE tt ( c1 int,c2 VARCHAR(8), CONSTRAINT u_tt UNIQUE (c1,c2));
表已建立。
SQL> insert into tt(c1,c2) values(1,' ');--兩個空格
已建立 1 行。
SQL> insert into tt(c1,c2) values(1,''); --沒有空格
已建立 1 行。
SQL> insert into tt(c1) values(2); --c2被填充為null
已建立 1 行。
SQL> select * from tt;
C1 C2
---------- ----------------
1
1
2
SQL> select c1,nvl(c2,'null') from tt;-- 可見,''被解釋成null
C1 NVL(C2,'NULL')
---------- ----------------
1
1 null
2 null
SQL> select * from tt where c2 =''; --因為表中的''被解釋成null,所以沒有查到
未選定行
SQL> select * from tt where c2 is null;
C1 C2
---------- ----------------
1
2
SQL> select * from tt where c2 = ' ';
C1 C2
---------- ----------------
1
SQL>
從上可見。ORACLE把''解釋成 NULL。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22565551/viewspace-1027676/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 建表時的約束的語法在informix和oracle中的差異ORMOracle
- kettle 裡的 NULL 和空字串Null字串
- 深入分析Java使用+和StringBuilder進行字串拼接的差異JavaUI字串
- JS去掉字串空格JS字串
- iOS 字串過濾空格iOS字串
- 【劍指offer】【2】字串的空格字串
- javascript刪除字串中的空格JavaScript字串
- js去掉字串兩邊的空格JS字串
- 將字串中的空格用 代替字串
- 比較字串和數字串字串
- 區分全形和半形的刪除字串兩端空格程式碼字串
- js判斷輸入字串是否為空、空格、null總結JS字串Null
- Problem 4:替換空格(字串)字串
- ABAP字串拼接保留空格字串
- Python如何去掉字串空格?Python字串
- Java™ 教程(比較字串和字串的部分)Java字串
- UDP和TCP的差異UDPTCP
- vue和react的差異VueReact
- 比較字串和數字串(續)字串
- JavaFX教程-字串和字串表示式Java字串
- python如何去掉字串中的空格Python字串
- js如何刪除字串中的空格JS字串
- 如何清除字串中的所有空格字串
- jQuery刪除字串兩端的空格jQuery字串
- 如何刪除字串內部的空格字串
- jquery如何去掉字串兩端的空格jQuery字串
- javascript如何去掉字串兩端的空格JavaScript字串
- java字串“==”與“equals”的差異及與c#的區別Java字串C#
- 字串大小寫轉換和字串的比較字串
- JavaScript刪除字串兩端空格JavaScript字串
- js去掉字串中所有的空格JS字串
- javascript如何去掉字串兩端空格JavaScript字串
- 替換空格 將一個字串中的空格替換成“ ”字串
- mysql時間操作(時間差和時間戳和時間字串的互轉)MySql時間戳字串
- ERP差異來源和差異處理
- shell 給字串增加單引號,並移除字串中多餘的空格字串
- 【劍指offer】替換字串中的空格字串
- sql 去除字串的左右全形、半形空格SQL字串