0

我正在尝试对行进行更改检测的校验和,因此我可以比较 2 个表。我过去做过的一种方法是串联所有列,然后进行哈希处理。如何连接所有列?

从表中选择 concat(*);

不工作

我还尝试了 PostgreSQL 变体

从 sandbox.abs_frmt r 中选择 r::text;

4

1 回答 1

0

默认情况下,字符串长度是有限的,因此最好对每列进行哈希并使用函数来组合哈希。

如果您不关心连接值的大小,最接近的内置逻辑是使用 jsonArray、jsonObject 或 xmlforest 来创建代表行的单个值 - jsonArray 可能更可取,因为它只会是值,没有名字:

选择 sha2_256(cast(jsonArray(col1, col2, ...) as string)),... from tbl;

于 2018-11-06T16:35:48.663 回答