R. *_*tin 7 postgresql psql bytea
我目前正在处理一个包含以 bytea 格式存储的散列的表。然而,将散列转换为十六进制字符串会产生错误的字节顺序。例子:
SELECT encode(hash, 'hex') FROM mytable LIMIT 1;
Output: 1a6ee4de86143e81
Expected: 813e1486dee46e1a
Run Code Online (Sandbox Code Playgroud)
有没有办法颠倒所有条目的字节顺序?
这是一种方法,但我永远不会这样做。在数据库的bytea
列中存储字节没有任何问题。但是,我不会在数据库中争吵,如果我这样做了,我会使用,
这是 sql-esque 并且应该可以工作——这就是我们正在做的事情,
这是一个例子,
CREATE TABLE foo AS SELECT '\x813e1486dee46e1a'::bytea AS bar;
SELECT bar, string_agg(to_hex(byte), '') AS hash
FROM foo
CROSS JOIN LATERAL (
SELECT get_byte(bar,"offset") AS byte
FROM generate_series(0,octet_length(bar)-1) AS x("offset")
ORDER BY "offset" DESC
) AS x
GROUP BY bar;
Run Code Online (Sandbox Code Playgroud)
两个笔记,
offset
因为它是保留的,但您明白了。