blogger

    blogger
  • hot log

  • comment

    twitter

    • 12.10.xC6出来时候碰到"Could not determine encryption mode from page zero",竟果然是BUG!http://www-01.ibm.com/support/docview.wss?rs=630&uid=swg21973408

      2015-12-21 20:15

    • 空间已经转移到新加坡,希望会好一些。

      2015-11-16 14:34

    • 增加新域名liaosnet.cc,与liaosnet.com同指向。

      2015-10-09 15:25

    • 空间迁移到香港。或许速度会快一点。。

      2014-02-13 20:10

    • 解决个问题:NBU配置Storage时的目录在系统分区上,导致备份失败,最终原因是目录在系统分区上时,需要在 This directory can exist on the root file system or system disk. 这个选项前打上勾。

      2012-09-26 22:21

    • More»

    blog sort

    links

    record

    banner

    Informix与db2排序时null值处理

    暗夜星空's Memory from Jun 28 , 2016 at 20:27 PM , under Category:INFORMIX
    客户的数据库从db2迁移到gbase 8t/informix,在测试存储过程中,发现存储过程能正常执行,但结果却是不正确的。
    按存储过程中的SQL语句逐条执行对比,发现在使用到
    SELECT ROW_NUMBER()OVER(PARTITION BY FID ORDER BY MID) AS PX,MID,FID  FROM FTAB

    时,结果出现不一致。db2的结果是
    PX		MID		FID
    1		M1		F1
    1		M2		F2
    2				F21
    3				F22
    4				F23
    1		M3		F3
    2				F32
    3				F33

    8t/informix的结果是
    px		mid		fid
    1		M1		F1
    1				F2
    2				F21
    3				F22
    4		M2		F23
    1				F3
    2				F32
    3		M3		F33

    两者明显的区别就是null的前后放置顺序。即两个数据库order by排序时对null值的默认处理方式不同:db2是null值为后,8t/informix是null值优先。
    为了正常迁移,可通过指定order by排序时null值的处理方式nulls last/nulss first 以达到预期的需求。将该语句改成:
    SELECT ROW_NUMBER()OVER(PARTITION BY FID ORDER BY MID NULLS LAST) AS PX,MID,FID  FROM FTAB
    即可。

    Post a comment:

    Your email address will not be published. Required fields are marked﹡