权限处理,正常用户,不包含测试数据。
写了个comp_id not in(1,2,3)。
结果部分发票 comp_id 是null,就查看不到了。
正常需求,应该看到。
解决办法一:
comp_id not in(1,2,3) or comp_id is null。
但是,这种办法,对项目影响较大,改动的地方比较多。
解决办法二:
修改comp_id 默认值为“”,因为项目中 公司id 用的是 varchar,所以可以这么做。
解决办法三:
如果comp_id是int(11)整型,修改默认值为0。
在界面中展示或程序内部判断的时候,注意 comp_id > 0,这样程序就不会有bug了。
这个问题,还让我想起一个问题,创建数据库表结构的时候,不推荐默认值为null,NULL不方便走索引。
效率可能非常低。(大概如此,不是数据库专家,嘿嘿)
--------------------另外一个哥们遇到的-------------
假如有表t1:
id | val
-------------
1 | a
2 | (NULL)
3 | b
4 | (NULL)
我想找出val不是a的行,执行sql语句:
SELECT * FROM t1 WHERE val NOT IN ('a')
结果会是什么?
id | val
-------------
1 | b
只有一行,那2行val为NULL的是不包含在内的,
所以要完整查出,sql应该是这样的:
SELECT * FROM t1 WHERE val NOT IN ('a') OR val IS NULL
---------------------
作者:wuzuyu365