WEB开发网
开发学院数据库MSSQL Server SQL开发中容易忽视的一些小地方 阅读

SQL开发中容易忽视的一些小地方

 2008-10-13 10:07:39 来源:WEB开发网   
核心提示: 插入相关测试值:insert into testNullvalues('1','')insert into testNullvalues('2',null)1:普通的值一般都可能进行运算符操作,例如:ID列为int,所以可以这样:ID=ID+

插入相关测试值:

insert into testNull
values('1','')
insert into testNull
  
values('2',null)

1:普通的值一般都可能进行运算符操作,例如:ID列为int,所以可以这样:ID=ID+1等,但如果一列的值为null,null+1=null,就是说null与任何运算符运算后都为null,这就是大家说的黑洞,会吃掉所有的东西.

update testNull

set b=b+1

where b is null

结论:查询后发现b的值没有变化,仍然为null.

2:普通的值可以进行"="操作,例如条件中一般都会这样出现:sUserName='张三',如果sUserName的值为null,要想找出所有名字为null的记录时,不能这样用:sUserName=null,因为null不是一个具体的值,任何值与它比较时都会返回false.此时可借用is null 或者是is not null.

示例查询:

1:select * from testNull where a=null --返回空结果集

2:select * from testNull where b is null --返回结果集 2 2 NULL

结论:说明null是不能用"="来比较,可用is null来替换

3:在用统计函数count时会不同,例如count(ID):统计记录数.当统计的记录中的包含有null值时,它会忽略null值.

示例查询:

1:select count(*),count(b) from testNull 它的返回值为2 1

2: select count(*),count(isnull(b,'')) from testNull 它的返回值为2 2

结论:对于列包含null 时,统计行数是可用count(*),或者是先把null值转换成对应的值再统计,例如count(isnull(b,''));

4:对于in 的影响不同.

示例查询: 查询testNull表中b的值包含在null中的记录.

上一页  1 2 3 4 5 6  下一页

Tags:SQL 开发 容易

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接