㈠ ACCESS或EXCEL數據導入到sql資料庫中,空值導入後變成了NULL
"空值"是null的中文叫法,兩者是同一個東西。我想題主是想弄清楚"空字元串"(也稱為"0長度字元串")與null(空值)之間的區別和處理方法。
在系統里,空值用關鍵字null表示,空字元串則用一對沒有間隔的英文雙引號""或英文單引號''表示(access資料庫單、雙引號表示的空字元串都可被識別,而MSSQL則必須要用一對單引號表示空字元串)。前者的數據類型是未知的,而後者的數據類型則是明確的,即它屬於字元型。在沒有約束的情況下,null值可以被寫入任何數據類型欄位,而空字元串只能寫入字元型欄位里。在資料庫里null(空值)表示沒東西,一個欄位在未寫入數據前它天然就是空的,因此我們可以通過隱式或顯式兩種方式向數據表寫入null值,但是空字元串只能通過顯式方式寫入數據表,因為空字元串實際上是一種特殊的字元(長度為0)它不會天然就存在的,存儲空字元串是要佔用物理磁碟空間的。
例如,有學生表
students(sid int primary key,name varchar(50) not null,sex char(1) not null,dob datetime not null,phone varchar(50):
-- 隱式向電話欄位寫入null(空值),也就是不向欄位寫入任何值
insert into students (sid,name,sex,dob) values(101,'張三','男','1996-01-04')
-- 顯式向電話欄位寫入null(空值)
insert into students (sid,name,sex,dob,phone) values(101,'張三','男','1996-01-04',null);
-- 只能顯式向電話欄位寫入空字元串'',否則null值會取而代之,這是null的天然屬性使然
insert into students (sid,name,sex,dob,phone) values(101,'張三','男','1996-01-04','');
在EXCEL里,系統對於空的單元格統一當做空字元串進行處理,我們可以將null(空值)和空字元串混為一談,而在資料庫里則不得將兩者視為一樣,對它們需要分別處理,否則可能會出現混亂。請留意,在ACCESS數據表視圖里,空字元串和null值的外觀看起來都是「空」的,如果你看到「空」的欄位值,不表示它一定就是空值,它也許是空字元串,如果已經顯式存入了空字元串的話。而在MSSQL里系統會用不同的外觀來展示null值和零長度字元串,前者顯式為null,後者顯式為「空」。
我們在使用不同的系統工具向MSSQL導入數據時,系統對於被導入數據中的「空字元串」的處理方式可能會有變化的,有些情況下會將「空字元串」當做NULL來處理,有些則會按實際值來處理,是空值的就導入為空值,是零長度字元串則導入為零長度字元串。一般來說從excel、TXT等導入系統會將空字元串當做null導入,而從資料庫表導入則按實際值導入。
題主如果想將MSSQL數據表的NULL轉換為空字元串,可以運行更新查詢,例如
update students set phone='' where phone is null;
也可以將欄位的默認值設置為''零長度字元串,這樣系統會在欄位沒有指定欄位值時自動輸入空字元串。
㈡ mysql資料庫 null怎麼表示
空值是一個比較特殊的欄位。在mysql資料庫中,在不同的情形下,空值往往代表不同的含義。這是mysql資料庫的一種特性。如在普通的欄位中(字元型的數據),空值就是表示空值。但是如果將一個空值的數據插入到timestamp類型的欄位中,空值就不一定為空。此時為出現什麼情況呢
我先創建了一個表。在這個表中有兩個欄位:user_id(其數據類型是int)、date(其數據類型是timestamp)。現在往這個表中插入一條記錄,其中往date欄位中插入的是一個null空值。可是當我們查詢時,其結果顯示的卻是插入記錄的當前時間。這是怎麼一回事呢?其實這就是在mysql資料庫中執行sql語句時經常會遇到的一個陷阱:空值不一定為空。在操作時,明明插入的是一個空值的數據,但是最後查詢得到的卻不是一個空值。
在mysql資料庫中,null對於一些特殊類型的列來說,其代表了一種特殊的含義,而不僅僅是一個空值。對於這些特殊類型的列,各位讀者主要是要記住兩個。一個就是筆者上面舉的timestamp數據類型。如果往這個數據類型的列中插入null值,則其代表的就是系統的當前時間。另外一個是具有auto_increment屬性的列。如果往這屬性的列中插入null值的話,則系統會插入一個正整數序列。而如果在其他數據類型中,如字元型數據的列中插入null的數據,則其插入的就是一個空值。
㈢ access 查詢空值和null值的區別
空值和Null值,兩者是同一個東西。前者是後者的中文說法。
我想樓主實際是想搞清楚 空字元串(我們也可以稱之為0長度字元串)與Null值(空值)的區別。
盡管這兩者在外觀上看起來都是沒東西,但是這兩者有很大的區別:
1)空字元串(0長度字元串)在代碼中用一對沒有間隔的英文雙引號表示--> "" (外層有雙引號的情況下用一對英文單引號表示--> '')其數據類型是明確的,即為字元型。存儲「空字元串」是要佔據物理磁碟空間的;
2)Null值(空值)在代碼中用關鍵字 "Null" 表示,代表沒東西,其數據類型未知,它不佔用物理磁碟空間。
為了進一步講清楚這兩者的區別,下面舉一個數據表來說明
新建學生表 Students(ID 數字,Name 文本,Tel 文本)暫時不添加除數據類型外的任何約束
分別運行下列SQL動作查詢,插入4條記錄
a) insert into Students(ID,Name) values(1,"張三")
b) insert into Students(ID,Name,Tel) values(2,"李四",Null)
c) insert into Students(ID,Name,Tel) values(3,"王五","3348912")
d) insert into Students(ID,Name,Tel) values(4,"陳六","")
運行選擇查詢
select ID,Name,Tel,IIf(IsNull(Tel),"Null",IIf(Tel="","''",Tel)) as Tel的實際存儲值 from Students
返回下列記錄
㈣ 資料庫中空值的含義
資料庫中空值的含義, 就是相當於 「不知道」 的含義。
例如有一個 員工表。
包含下面這些列:
員工代碼 NOT NULL,
員工姓名 NOT NULL,
員工生日,
員工籍貫,
......
其中, 員工代碼 與 員工姓名 是 非空的, 那麼必須有數據。 不能說 「不知道」。
而 員工生日 與 員工籍貫 是 可以為空的, 那麼 允許不寫數據, 也就是 可以 「不知道」
例如數據:
員工代碼 員工姓名 員工生日 員工籍貫
TESTSH01 張三 NULL 上海
TESTSH02 李四 1988-8-8 NULL
㈤ MySQL 中NULL和空值的區別是什麼
空值是不佔用空間的,MySQL中的NULL其實是佔用空間的。
㈥ MySQL 中NULL和空值的區別
"空值"是對null值的中文叫法,兩者同指一個東西。
我想樓主是想弄清楚null(空值)與零長度字元串''(或稱為空字元串)之間的區別。
在代碼里"零長度字元串"用一對沒有間隔的英文引號''表示,它的數據類型是明確的即屬於字元型,存儲"零長度字元串"是要佔用物理磁碟空間的;
而null值其數據類型是未知的,它不會佔用物理磁碟空間。
在不存在約束限制的情況我們可以將Null值插入任何數據類型的欄位里,而零長度字元串''只能插入到字元型數據類型欄位中,插入其它類型欄位會報錯。
我們通過實測看看null(空值)與零長度字元串''(或稱為空字元長)之間的區別:
1)輸出所有的記錄
select * from students;
注意:此例只要不含Null值的記錄都予以輸出