Postgresql 如何在Postgres中替换Oracle的ORA_散列函数?

Postgresql 如何在Postgres中替换Oracle的ORA_散列函数?,postgresql,postgresql-9.6,Postgresql,Postgresql 9.6,如何在Postgres中替换Oracle的ORA_HASH函数?我希望实现已写入Oracle的批处理和合并逻辑,同样,我也希望在Postgres中实现它 SELECT DISTINCT ACCNT_TYPE,ACCNT_SUB_TYPE,ACCNT_FROM_VAL,ACCNT_TO_VAL AS T_ACCNT_TO_VAL, ORA_HASH("NAME"||TO_CHAR(LIFECYCLE_DATE,'DD-MM-YYYY HH24:MI:SS')||LEGACY_I

如何在Postgres中替换Oracle的ORA_HASH函数?我希望实现已写入Oracle的批处理和合并逻辑,同样,我也希望在Postgres中实现它

SELECT DISTINCT ACCNT_TYPE,ACCNT_SUB_TYPE,ACCNT_FROM_VAL,ACCNT_TO_VAL AS T_ACCNT_TO_VAL,
ORA_HASH("NAME"||TO_CHAR(LIFECYCLE_DATE,'DD-MM-YYYY HH24:MI:SS')||LEGACY_ICA_TYPE||TO_CHAR(PURGE_DATE,'DD-MM-YYYY HH24:MI:SS')
||HUB_STATE_IND||LIFECYCLE_STATUS_CD||VAT_ID||LICENSED_SW||PRIMARY_ICA||TOKEN_ACCT_SRV_DESC) AS HASH_VAL
FROM C_ACCNT
ORA_散列中提到的所有字段用于评估是否应该执行INSERT,而应该通过考虑所有这些字段来执行INSERT

几乎相同的查询,但表名与左外部联接不同。此外,如果哈希值不同,则会考虑将其用于UPSERT

为什么这个查询总是给我空的响应

select md5(p.src_id || p.type || p.accountName) 
FROM ACCOUNT p;

若类型值为NULL,则md5将导致NULL。这是不好的。

如果您只需要一个字符串的哈希函数,请使用PostgreSQL内置的
hashtext

在PostgreSQL中,您可以使用
md5()
来实现它。它与ORA_HASH()不完全相同,但它的作用几乎相同。这是否回答了您的问题?在发布问题之前,我浏览了所有这些链接,请查看我更新的帖子。@a_horse_,没有名字-没有,这并没有解决我的问题。请不要关闭此问题。“为什么此查询总是给我空响应?”-因为其中一列为空。Oracle在空字符串和空值方面的行为不同。您可以使用
concat()
将空值视为Postgres中的空字符串