【发布时间】:2021-06-19 04:51:35
【问题描述】:
我有一个示例产品销售表,它由大约 15 列和几千行组成。我最感兴趣的列如下所示:
product_type currency amount order_time delivered_time
hoodie GBP 60.0 2021-03-10 14:32:07 2021-03-13 16:05:52
shirt EUR 30.0 2021-03-20 19:22:32 2021-03-24 11:18:46
...
目前有一个唯一标识符,但它不适用于广泛的分析,一个订单中可以有多个产品,但它们都有不同的标识符,因此您无法匹配它们。
我想要做的是使用哈希函数创建一个新的标识符列,我使用了下面的代码并显示了我得到的示例输出:
SELECT *, Md5(product_type||currency||amount)
FROM sales
product_type currency amount identifier
Coat GBP 100.0 825be52c31f1d92584720466d743e2cf
Coat GBP 100.0 825be52c31f1d92584720466d743e2cf
此代码适用于我已包含在哈希函数中的 3 列,但我也想将两个 DATETIME 列包含到函数中,但它不起作用。我已经使用此代码尝试包含它们,代码运行但即使列中的所有值都匹配,我得到的哈希值也彼此不同:
SELECT *, Md5(product_type||currency||amount||TRUNC(order_time)||TRUNC(delivered_time))
我在两个日期列上使用了 TRUNC 函数,因为我不太关心确切的分钟或秒,主要只对日期本身感兴趣。我怎样才能包含两个日期时间列而不弄乱哈希函数?
【问题讨论】:
-
“不起作用”是什么意思?你有错误吗?
-
不,它运行但哈希值不同,即使该行中的所有值都匹配。
标签: sql hash amazon-redshift md5