2012-08-08 86 views
0

首先,我不能重新導出這個數據,所以我被這個文件卡住了。爲MySQL導入將十六進制數字轉換爲int

在下面發佈的示例中,INT列的值爲十六進制。我認爲。像0X31這樣的值需要導入爲1.相反,它們導入爲49.我猜這可能是ascii的等價物。我需要導入0x31作爲1,0x32作爲2,等等。我該怎麼做?

我也可以用一個足夠聰明的文本編輯器來搜索和替換這些值。我有數以千計的問號,所以我不想這樣做手動例如搜索「0x31」替換爲「1」。

這是進口樣品。

REPLACE INTO 'qa_sharedevents' ('entitytype', 'entityid', 'questionid', 'lastpostid', 'updatetype', 'lastuserid', 'updated') VALUES ('Q', '1', 0x31, '1', '', '1', '2012-03-08 23:45:56'), ('U', '1', 0x31, '1', '', '1', '2012-03-08 23:45:56'), ('Q', '1', 0x31, '3', '', '', '2012-03-09 02:23:54'), ('T', '17', 0x31, '1', '', '1', '2012-03-08 23:45:56'), ('Q', '2', 0x32, '2', '', '1', '2012-03-09 01:28:36'), ('U', '1', 0x32, '2', '', '1', '2012-03-09 01:28:36'), ('Q', '2', 0x32, '2', 'E', '1', '2012-03-09 01:30:27'), ('U', '1', 0x32, '2', 'E', '1', '2012-03-09 01:30:27'),

+0

'0x31' *是*'49',而不是'1'。什麼是替代標準?刪除任何'0x3'的前綴? – 2012-08-08 16:26:44

+0

'0x31'是49,但'0x31'也是'1'的ASCII碼,正如49中的十進制 – Ghost 2012-08-08 16:36:45

回答

2

嘗試CHAR()功能:

mysql> select char(0x31), char(0x35); 
+------------+------------+ 
| char(0x31) | char(0x35) | 
+------------+------------+ 
| 1   | 5   | 
+------------+------------+ 
1 row in set (0.00 sec) 
0

你可以使用MySQL subtring功能。嘗試在你的mysql客戶端上看看它是如何工作的:

select substring('0x31', - 1,1);

相關問題