內容概述:
《1》對字段值為null的字段進行數值計算
《2》如何在查詢條件中使用字段值為null的記錄
《3》使用統計函式count,查詢包含null記錄的資料集
《4》使用in關鍵字查詢時,查詢包含null記錄的資料集
《5》字段值為null的記錄在排序時的顯示
《6》使用group時,null視為相等的值
《7》null值的總結
1、初始使用環境
(1)create the table for testing
create table [dbo].[testnull](
[id] [int] identity(1,1) not null,
[a] [nchar](10) collate chinese_prc_ci_as null,
[b] [nchar](10) collate chinese_prc_ci_as null,
constraint [pk_testnull] primary key clustered
([id] asc
)with (ignore_dup_key = off) on [primary]
) on [primary]
(2)insert the new records to this test table
insert into testnull values('1','')
insert into testnull values('2',null)
2、測試驗證
(1)普通的值一般都可能進行運算子操作,例如
:id列為
int,
所以可以這樣
:id=id+1等,
但如果一列的值為
null,null+1=null,
就是說null
與任何運算子運算後都為
null,
這就是大家說的黑洞
,會吃掉所有的東西
.update testnull set b=b+1 where b =''
結論:查詢後發現b的值沒有變化,仍然為null.
(2)
普通的值可以進行
"="操作
,例如條件中一般都會這樣出現
:susername='
張三',
如果susername
的值為null,
要想找出所有名字為
null
的記錄時
,不能這樣用
:susername=null,
因為null
不是乙個具體的值
,任何值與它比較時都會返回
false.
此時可借用
is null
或者是is not null
.select * from testnull where b=null --
返回空結果集
select * fr
om testnull where b is null --
返回結果集
2 2 null
結論:說明null是不能用"="來比較,可用is null來替換
(3)
在用統計函式
count
時會不同,例如
count(id):
統計記錄數
.當統計的記錄中的包含有
null值時,
它會忽略
null值.
select count(*),count(b) from testnull --它的返回值為2 1
select count(*),count(isnull(b,'')) from testnull --它的返回值為2 2
結論
:對於列包含null時,統計行數是可用count(*),或者是先把null值轉換成對應的值再統計,例如count(isnull(b,''));
(4)
對於in
的影響不同
.
示例查詢
: 查詢
testnull表中b
的值包含在
null
中的記錄
.select * from testnull where b in(null) --
沒有任何記錄
結論:in在查詢時會忽略null的記錄,查詢的時候可用is not null來查詢.
(5)
排序時順序有不同
:當使用
order by
時,首先呈現
null
值。如果你用
desc
以降序排序,
null
值最後顯示。
1:select * from testnull
1 1 ''
2 2 null
2:select * from testnull order by b
2 2 null
1 1 ''
3:select * from testnull order by b desc
1 1 ''
2 2 null
(6)
當使用group by
時,所有的
null
值被認為是相等的。這時先多插入幾條資料
,方便檢視結果
.insert into testnull values('3',null)
insert into testnull values('4','4')
select count(b),b from testnull group by b
返回結果
: 0 1
1
結論:可見在
group by的時候
,null視為等同
.
(
7)
永遠不會有什麼資料等於null。1不等於null,2也一樣。但null也不等於null。所以我們只能比較它「是」或「不是」。
SQL盲注中函式的用法
計算資料庫長度 id 1 and lengh database 8 sql的left 函式表示的是從字元表示式最左邊乙個字元開始返回指定數目的字元.若 b 的值大於 a 的長度,則返回字元表示式的全部字元a.如果 b 為負值或 0,則返回空字串.一般用來猜測庫的名字 庫名為security 這說明第...
整理jquery中的switch用法及注意問題
在需要用到jquery的switch方法時,半天沒除錯出來。按理說是和php的switch方法差不多才對啊,後面才發現switch的條件必須和每個case表示式嚴格比較。先獲取選項框的選中value值 var type select option selected val alert type 結果...
sql中null的使用
1.需求 從department表中讀取部署名稱 部門名稱 as 成name 1.1department表中儲存部門 部署 部分 工序 departmentid,arrangeid,partid,processid select departmnet name departid name from ...