在Redshift中将MD5输出转换为32位整数

Raj*_*jib 1 postgresql amazon-redshift

我在Redshift中尝试了以下内容

SELECT STRTOL(MD5('345793260804895811'), 10);
Run Code Online (Sandbox Code Playgroud)

但我得到以下内容DBCException:

SQL错误[22023]:错误:输入cf82576a6dbf9ff63cf9828f990f0673无效转换为基数10

org.postgresql.util.PSQLException:PSQLException:错误:输入cf82576a6dbf9ff63cf9828f990f0673无效转换为基数10

我怎样才能在Redshift中完成这项工作?

Joe*_*ris 6

你有2个问题:

  • 首先,您需要将转换指定为基数16
  • 其次,MD5字符串将大量溢出64位BIGINT

这很好用

SELECT STRTOL(LEFT(MD5('345793260804895811'),15), 16);
Run Code Online (Sandbox Code Playgroud)

将MD5十六进制值缩短为最左边的15个字符,并转换为BIGINT使用基数16.