2014-10-01 89 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