2014-10-01 63 views
1

我正在一个数据库中工作,要求将ASCII值存储为十六进制,每个字符之间有间隔。我发现了一种在Python中执行“加密/解密”的方法,但我需要能够在SQL 2008 R2中本地执行此操作。这甚至有可能吗?下面使用填充将ASCII转换为HEX并返回?

样品输入/输出:

Text Input:      Test 
Input in ASCII:     0x54657374 
How input needs to be in database: 0x540065007007400 

我不知道如何从文本转换为数据库所需的输入和背部严格SQL。有任何想法吗?

谢谢!

+0

会有问题在ASCII输入的是什么数据类型? – 2014-10-01 20:00:28

+0

输入十六进制字符串将是VARBINARY(128) – 2014-10-01 23:56:18

回答

0

假设你是好以ASCII输入保存为NCHAR,这里是一个办法:

declare @myHex nchar(12) 
set @myHex = '0x54657374' 
select '0x' + 
     SUBSTRING(@myHex, 3, 2) + '00' + 
     SUBSTRING(@myHex, 5, 2) + '00' + 
     SUBSTRING(@myHex, 7, 2) + '00' + 
     SUBSTRING(@myHex, 9, 2) + '00' 
+0

这是否占用可变大小的ASCII字符串? – 2014-10-01 21:19:02

+0

@AlbertDorson它应该。就我所知,ASCII字符串应该是10个字符。你能举个例子说明你的意思吗,“可变大小的ASCII字符串”? – 2014-10-01 21:47:34

+0

这里是有趣的部分..我使用的软件将每个字符编码为十六进制表示(P = 50等),在每个字符之间添加一个00间隔符(以及随后的00),并将其引入数据库。 因此,如果我有一个字符串PartitionTest,它存储在数据库中,为0x50006100720074006900740069006F006E005400650073007400。 我想我有代码删除所有的00s离开我与0x506172746974696F6E54657374,但我需要解码它回到PartitionTest。最后,我需要能够从字符串转换为填充十六进制字符串,并返回 谢谢! – 2014-10-01 22:20:15