将字符串转换为数字的逻辑

Logic to convert string of words to number

我正在寻找一种逻辑来帮助我在 teradata 和 hive 中将字符串转换为数字。

它应该很容易在 Tearadata 中实现,因为我没有在 TD 中部署 UDF 的权限。在hive中如果不简单我可以轻松写一个UDF。

我的要求 - 假设我有列 sender_country,接收国。我想为 concat('sender_country','_','receiver_country') 生成一个数字 如果国家再次出现,数字应该始终相同。

下图

UID sender_country  receiver_country    concat  number
1   US              UK                  US_UK   198760
2   FR              IN                  FR_IN   146785
3   CH              RU                  CH_RU   467892  
4   US              UK                  US_UK   198760

它应该是一个国家的所有独特组合都应该具有独特价值的方式。就像在上面的例子中 US_US 被重复,它有相同的对应 number.

我在 TD 中尝试过 hashbucket(hashrow('concat')),但不知道它在 hive 中的等效实现。

类似地,我们在 hive 中有 hash() 函数,但在 TD 中没有相应的函数。

我找不到任何在 TD 和 Hive 中 returns 相似值的哈希函数

您可以简单地将每个字符转换为数字:

Ascii(Substr(sender_country,1,1))*1000000+
Ascii(Substr(sender_country,2,1))*10000+
Ascii(Substr(receiver_country,1,1))*100+
Ascii(Substr(receiver_country,2,1))

returns 85838575 对于 US,UK