SQL SERVER中关于NULL应注意的问题

NULL是个比较特殊的类型,顾名思义就是什么都没有,什么都不是(通俗说法)。所以在使用它时需要注意一些,以下是在工作中碰到的一些问题和分析:

1)当某个字段FIELD1允许为NULL值时且默认值为NULL时,如果要更新它时可能会用到update tablename set FIELD1 = FIELD1 + VALUE,看上去没有错,其实如果某记录的FIELD1的值为NULL,那么永远都不会被更新,所以首先要判断是否为NULL,不为NULL则采用以上语句更新,否则则先将值直接更新FIELD1字段。

结论:NULL和任何值相加都为NULL

2)理论上加入A记录的B字段值为'AAA',假如要筛选B字段值不为NULL的字段用SELECT * FROM tablename WHERE B <> NULL进行查询,其实NULL在SQL语句中是不能用"=,<>,>,<"来比较的。所以执行的结果【在查询分析器中或在其它IDE中】是错误的。正确的语法应是:SELECT * FROM tablename WHERE B is not NULL或者SELECT * FROM tablename WHERE B is NULL。

结论:用SQL语句来比较NULL值要使用IS,IS NOT。但在存储过程中可以使用=,<>来比较,我想可能是存储过程会自动将此语法改为正确的比较语法。但强烈建议大家以后还是使用正确的比较方法,用IS,IS NOT来比较NULL值。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值