gpt4 book ai didi

将 NUMERIC 转换为 BYTEA 并将 BYTEA 转换为 NUMERIC 的 SQL 函数

转载 作者:行者123 更新时间:2023-11-29 14:03:00 28 4
gpt4 key购买 nike

在 PostgreSQL 中,如何将 NUMERIC 值转换为 BYTEA 值?和 BYTEANUMERIC?使用 TEXT 值我可以使用 CONVERT_TO()CONVERT_FROM()。有什么类似的吗?如果不是,SQL函数代码会是怎样?

最佳答案

以下是使用 PG 11 测试的函数。请注意,numeric2bytea 仅处理非负数。

CREATE OR REPLACE FUNCTION bytea2numeric(_b BYTEA) RETURNS NUMERIC AS $$
DECLARE
_n NUMERIC := 0;
BEGIN
FOR _i IN 0 .. LENGTH(_b)-1 LOOP
_n := _n*256+GET_BYTE(_b,_i);
END LOOP;
RETURN _n;
END;
$$ LANGUAGE PLPGSQL IMMUTABLE STRICT;

CREATE OR REPLACE FUNCTION numeric2bytea(_n NUMERIC) RETURNS BYTEA AS $$
DECLARE
_b BYTEA := '\x';
_v INTEGER;
BEGIN
WHILE _n > 0 LOOP
_v := _n % 256;
_b := SET_BYTE(('\x00' || _b),0,_v);
_n := (_n-_v)/256;
END LOOP;
RETURN _b;
END;
$$ LANGUAGE PLPGSQL IMMUTABLE STRICT;

例子:

=> select bytea2numeric('\xdeadbeef00decafbad00cafebabe');
bytea2numeric
------------------------------------
4516460495214885311638200605653694
(1 row)

=> select numeric2bytea(4516460495214885311638200605653694);
numeric2bytea
--------------------------------
\xdeadbeef00decafbad00cafebabe
(1 row)

关于将 NUMERIC 转换为 BYTEA 并将 BYTEA 转换为 NUMERIC 的 SQL 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37248518/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com