zoukankan      html  css  js  c++  java
  • PostgreSQL位操作时"can't cast type numeric to bit"错误之解决

    前两天编写一个PostgreSQL的函数,其中用到了位(bit)操作,但运行时却报错“can't cast type numeric to bit”。

    先略微介绍一下PostgreSQL的位操作,它没有使用内部函数,而是直接使用位操作符(如&, |, !, #等),报错的地方就是用到了&(bit AND):

    ...
    if field_name & 1 >0 then
    ...

    一开始令人很困惑,觉得这符合PostgreSQL的官方解释,不该有错误。而google近来又被封,baidu到的内容没有意义,拖了好一阵。

    后来忽然醒悟到错误原因所在,还是习惯性思维所致:原来该field_name在创建表时是按numeric(n, 0)定义的,通常习惯性地认为它是整型,而实际上它属于双精度数。普通的数学运算时PostgreSQL可以将其自动转换为整形,但在位操作时无法将其转换为bit类型,于是报错“can't cast type numeric to bit”。

    解决方法是将field_name先转换成整型再使用位操作符:

    ...
    if field_name::integer & 1 >0 then
    ...
  • 相关阅读:
    暂存。2
    暂存。
    dom兼容性问题3 元素操作
    一个查看Access数据库密码的工具
    解除IIS配置节锁定
    解决cef中title不现实tooltip的问题
    创建.symlnk文件
    查询orcale运行的SQL语句记录
    跨域http头
    C#抓取天气数据
  • 原文地址:https://www.cnblogs.com/wggj/p/8047203.html
Copyright © 2011-2022 走看看