1 从一个sql看功底的深浅。
其中team_scroe是int型 默认值设为null。 数据库mssql 2005。
昨天,被一个网友问一个sql,不报错,但结果没有变化。sql是形如
update team set team_scroe=team_scroe+10 where id=2
其中team_scroe是int型 默认值设为null。 数据库mssql 2005。
初看这个sql,我没看出来哪有问题。聪明的读者,你看出来是哪的问题了么。我再写一个sql,此语句适用于ms sql数据库。
update team set team_scrose=isnull(team_scrose,0)+10 where id=2 第一种写法,当id=2的记录的team_scroe的值是null的时候,执行下来 值还是null。 我那个网友就是犯了这个错误。 null+ 一个数 =null。 当然我们可以设置team_scroe的默认值是0.就不会遇到这个问题了。
以后我们设置字段,养成好的习惯,设默认值。另外时刻注意空值。
2 ms sql里查询语句如何增加一个自增字段。
注意mssql200和mssql 2005实现方法不一样。
select identity(int ,1,1) as id,* info #temptable from yourtable
2000的数据库要写入一个临时表。然后再查这个临时表。
2005以后的数据库,就不用写临时表了,可以利用 ROW_NUMBER() 举例:
select ROW_NUMBER() OVER (ORDER BY date ASC) AS ROWID,*
from tables