我有一个SQL Server数据库,其中uniqueidentifiers被转换并存储为varbinary(8),即
DECLARE @OrganisationID uniqueidentifier = '910D514A-8706-4BA1-9327-FE92EF4165E3';
SELECT CONVERT(varbinary(8), @OrganisationID, 1); /* 0x4A510D910687A14B */
我现在需要在AWS Redshift数据库中重新创建uniqueidentifier的这些十六进制表示。
在redshift中没有与varbinary类型相同的东西所以我相信我能做到这一点的唯一方法是通过python UDF吗?我设法创建一个UDF,它接受一个字符串,将该字符串转换为字节,然后从那里创建一个十六进制字符串。但是我不能让他们匹配。有没有办法可以格式化我的python生成的十六进制字符串,以匹配SQL varbinary 0x4A510D910687A14B?
create or replace function hex(data character varying)
returns character varying
as $$
import binascii
s = data.encode("utf-8")
s = binascii.hexlify(s)
return s
$$ language plpythonu stable;
select hex('910D514A-8706-4BA1-9327-FE92EF4165E3');
/* 39313044353134412d383730362d344241312d393332372d464539324546343136354533 */