PG本身是不支持无符号整型的,可能是因为这个不属于SQL标准的内容,可以做,但没必要~

    但是近期开发工具的时候,需要在SQL应用层面,能将int类型转换为unsigned int,因此琢磨了一下,开发了个工具函数,纯SQL实现(plpgsql),使用纯SQL是因为不想牵扯编译或者环境配置之类的事情,不然用C的话就是1行代码的事儿。函数地址:PG小工具

    使用效果如下:

    1. postgres=# select hashint4(12345);
    2. hashint4
    3. -----------
    4. -78097827
    5. (1 row)
    6. postgres=# select to_uint32(-78097827);
    7. to_uint32
    8. ------------
    9. 4216869469
    10. (1 row)
    11. postgres=# select to_uint32(0);
    12. to_uint32
    13. -----------
    14. 0
    15. (1 row)
    16. postgres=# select to_uint32(12345);
    17. to_uint32
    18. -----------
    19. 12345
    20. (1 row)

    在GDB里面验证一下结果是不是OK

    1. (gdb) p (uint32)(-78097827)
    2. $1 = 4216869469
    3. (gdb) quit