我有一个数据库,其中一个表存储bytea从另一个系统收集的各种通用数据的blob().该bytea字段可以包含任何内容.为了解如何解释数据,该表还具有格式字段.我写了一个Java应用程序读取bytea从数据库的字段byte[],然后我可以很容易地将其转换为double[]或int[]或任何格式字段通过说ByteBuffer和各种视图(DoubleBuffer,IntBuffer,等).
现在,我需要在触发器函数中对数据库本身的数据进行一些操作,以便与另一个表保持完整性.我可以找到几乎任何可以想象的数据类型的转换,但我找不到任何从bytea(甚至bit)到double precision和返回的内容.A bytea可以被分解,转换为比特,然后转换为int或bigint,但不是a double precision.例如,x'deadbeefdeadbeef'::bit(64)::bigint将转换为-2401053088876216593没有问题,但x'deadbeefdeadbeef'::bit(64)::double precision失败的"错误:无法将类型位转换为双精度"而不是给出IEEE 754的答案-1.1885959257070704E148.
我找到了这个答案/sf/answers/816329461/,它基本上实现了IEEE标准将位转换为double,但是在PostgreSQL中真的没有基本的转换函数吗?另外,我需要向后退double precision,bytea当我完成操作数据并需要更新表时,这个答案没有提供.
有任何想法吗?