这是一个坑,并且是有毒的坑。
一不小心我就掉进了这个坑里面,费了好大的力气这才从坑里面爬出来。
话不多说,开始吹BB啦。
一.简单说说遇到的问题:
连表查询,一对多。
出现 int, smalldatetime等非string类型的字段为null。
操作如下:
1.sql语句查询,结果完全准确。
2.直接后台获取,结果有点不一样,出现异常。
二.解决办法如下:
使用 ISNULL(value1, value2)
1、value1与value2的数据类型必须一致。
2、如果value1的值不为null,结果返回value1。
3、如果value1为null,结果返回vaule2的值。vaule2是你设定的值。
如果在select中就是isnull可以判断是否是null,如果是给个默认值,isnull("字段名","设定默认的数据")
例如1:select isnull(fs,6) from xuesheng where name='张三' 在表xuesheng中,fs分数如果为空,结果输出6。如果不为空,输出fs的值。
例如2:SELECT A.UserID,
A.LoginName,
ISNULL(B.AddTime, 0) AS AddTime,
ISNULL(B.ID, 0) AS ID
FROM A LEFT OUTER JOIN B ON A.UserID = B.UserID
Mysql的ifnull()函数:
ifnull(value1,value2)
1、如果value1不为空,结果返回value1。
2、如果value1为空,结果返回value2。同上