亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Oracle中null值和空字符串的坑及解決

 更新時間:2024年08月26日 09:53:00   作者:草莓田田圈~  
這篇文章主要介紹了Oracle中null值和空字符串的坑及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

思考

在學習oracle數(shù)據(jù)庫的過程中,發(fā)現(xiàn)當對字段進行約束,默認空字符串時,出現(xiàn)報錯

--創(chuàng)建employees表
CREATE TABLE employees (
  id NUMBER,
  name VARCHAR2(100)  
);
--對表新增email列,添加約束默認空字符串并且非空
ALTER TABLE employees ADD email VARCHAR2(100) DEFAULT ''  NOT NULL;

以上操作的預期是向employees表中添加數(shù)據(jù),email不添加數(shù)據(jù)的時候默認是空字符串,但實際上無法添加成功。

在MySQL數(shù)據(jù)庫中

--創(chuàng)建表employees
CREATE TABLE employees(
id int,   
name VARCHAR(100)   
);
--添加字段email,并添加約束
ALTER TABLE employees ADD email VARCHAR(100) DEFAULT ''  NOT NULL;
  • 向表中添加數(shù)據(jù)
--emial字段沒有添加,默認為空字符串,不是null
INSERT INTO employees (id,name) VALUES (1,'TOM');
INSERT INTO employees  VALUES (2,'Carl','');
--email添加一個值
INSERT INTO employees  VALUES (3,'Jhon','123@qq.com');
--查詢結(jié)果
mysql> SELECT  *  FROM  employees;
+------+------+------------+
| id   | name | email      |
+------+------+------------+
|    1 | TOM  |            |
|    2 | Carl |            |
|    3 | Jhon | 123@qq.com |
+------+------+------------+
3 rows in set (0.00 sec)

在MySQL數(shù)據(jù)庫中符合預期,email字段有數(shù)值時,是實際的數(shù)值,相反是默認的值。

  • 修改約束
ALTER TABLE employees modify email VARCHAR(100);
  • 添加數(shù)據(jù)
INSERT INTO employees (id,name) VALUES (1,'TOM');
INSERT INTO employees  VALUES (2,'Carl','');
  • 查看結(jié)果
mysql> SELECT  *  FROM  employees;
+------+------+-------+
| id   | name | email |
+------+------+-------+
|    1 | TOM  | NULL  |
|    2 | Carl |       |
+------+------+-------+
2 rows in set (0.00 sec)

MySQL中空字符串就是空字符串,空值就是NULL

在Oracle數(shù)據(jù)庫中

--創(chuàng)建表
CREATE TABLE employees (
id NUMBER,
name VARCHAR2(100)  
);
--新增email字段,添加約束
ALTER TABLE employees ADD email VARCHAR2(100) DEFAULT ''  NOT NULL;
  • 向表中添加數(shù)據(jù)報錯
INSERT INTO employees (id,name) VALUES (1,'TOM');
INSERT INTO employees  VALUES (2,'Carl','');

  • 修改約束
--修改email的約束,改成可以添加空值
ALTER TABLE employees MODIFY email varchar2(100) ;
--插入數(shù)據(jù)
INSERT INTO employees (id,name,email) VALUES (1,'TOM','');  --添加空字符串
INSERT INTO employees  VALUES (2,'Carl',null);

查詢結(jié)果,結(jié)果都是null

原因是因為在Oracle中,將長度為零的字符值視為NULL

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論