问题描述:如下图所示,点击表头时,无法正确排序。
解决思路:不是query的问题,是个数据问题,查询数据后发现,新增的这个字段,有值为0,值为1,和值为null这三种情况。再查sql发现,果然:
//认购管理 是否特殊折扣申请
If not exists (select 1 from KSQL_USERCOLUMNS where KSQL_COL_NAME ='CFSpecialZk' and KSQL_COL_TABNAME='T_SHE_PurchaseManage')
alter table T_SHE_PurchaseManage add CFSpecialZk int;
由小到大排序时 0<1<null
所以应该把这个字段改为非空字段。。
方法一:操作sql
1)alter table T_SHE_PurchaseManage add CFSpecialZk1 int DEFAULT 0 NOT NULL; // 新增一个非空字段 CFSpecialZk1
2)update T_SHE_PurchaseManage set CFSpecialZk1 = CFSpecialZk where CFSpecialZk is not null; //赋值
3)alter table T_SHE_PurchaseManage drop column CFSpecialZk1; // 把原字段drop掉
4)alter table T_SHE_PurchaseManage add CFSpecialZk int DEFAULT 0 NOT NULL; // 把原来的字段加上非空
5)update T_SHE_PurchaseManage set CFSpecialZk = CFSpecialZk1;// 把CFSpecialZk1赋值回CFSpecialZk
6)alter table T_SHE_PurchaseManage drop columnCFSpecialZk1;// 把 CFSpecialZk1 drop 掉
方法二:直接改变字段为非空
1) update T_SHE_PurchaseManage set CFSpecialZk = 0 where CFSpecialZk is null; //先把为空的值都赋为0
2) ALTER TABLE T_SHE_PurchaseManage ALTER COLUMN [CFSpecialZk] int not NULL; //再改变非空的属性
这样处理,即可。