【发布时间】:2017-01-13 11:15:34
【问题描述】:
我在 postgres 中存储了一个带有类似
的变量的过程DECLARE
totLen BYTEA;
BEGIN
totLen = E'\\x000034';
....
totLen 必须正好是 3 个字节,我必须将其他值相加
totLen = totLen + 1;
我尝试 totLen = totLen + E'\x01' 但不起作用。 正确的解决方案是什么?
【问题讨论】:
-
你想达到什么目的?为什么 PL/pgSQL 变量的长度对您很重要?
-
这不是重点,但你想知道我正在写 BUFR (en.wikipedia.org/wiki/BUFR) 消息。
-
问题仍然存在:为什么要关心变量的长度?您不能对
bytea值进行算术运算。您很可能以更简单的方式实现您想做的事情。如果您愿意分享您正在尝试做的事情的大局。 -
因为我正在写一些需要使用固定字节长度的东西,所以例如 totLen 必须正好是 3 个字节,并且它是动态构造的,所以我需要用它做算术。如果您有简单的方法,请解释一下,谢谢。
-
如果您实际上不使用 3 字节算术溢出的方式,那么坚持它是没有意义的。你可以在你的函数中使用
int(又名int4,它有4个字节和适当的算术)并在你完成后截断它的值。可能是bit strings。
标签: postgresql stored-procedures type-conversion bytea