SQL中的null的用法及要注意的方面

2022-07-22 19:36:18 字數 4884 閱讀 1849

內容概述:

1對字段值為null的字段進行數值計算

2如何在查詢條件中使用字段值為null的記錄

3使用統計函式count,查詢包含null記錄的資料集

4使用in關鍵字查詢時,查詢包含null記錄的資料集

5字段值為null的記錄在排序時的顯示

6使用group時,null視為相等的值

7null值的總結

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 ...