2012-06-04 122 views
2

我有一列中的值爲'11B3'。我想編寫一個SQL語句(在mySQL中)和(&),並用0x1880賦值並返回結果。我一直無法將字符串列作爲十六進制數字。我會很感激任何幫助。將十六進制字符串轉換爲mySQL中的數字

這不起作用:

select szVersion, hex(szVersion), concat("0x",szVersion) 

根據需要(但不從數據庫中提取此功能:

select 0x11bx & 0x1880 

回答

1

您可以使用UNHEX(STR)來更改十六進制文本,然後將它們連接在一起

+0

這似乎越來越接近。當我[ ]從mytable選擇unhex(mycolumn)] 我使用mySQL工作臺得到一個blob。我可以點擊blob,我看到它擁有11 B3。我試着用0x1880和它,但我得到0.我怎麼把那個blob變成一個數字? –

+0

先在工作臺上進入'編輯 - >首選項 - > SQL編輯器',然後將選項Treat BINARY/VARBINARY標記爲非二進制字符串。現在你可以將11B3轉換爲char,只是做這樣的事情:'SELECT CAST(UNHEX(mycolum)AS CHAR)AS NEW_COLUM FROM MY TABLE;' –

+1

我最終使用unhex來創建一個blob,然後自己解析它:case 0x2200&ascii(unhex(types.szVersion))* 256+ ascii(substring(unhex(types.szVersion),2,1))' –

3

使用CONV(szVersion,16,10)。下面是一個證明,它可以按預期工作

你寫你自己期待的結果與下面的語句的結果:

SELECT 0x11B3 & 0x1880; 
-> 4224 

因此,我們知道,理想的結果是現在做同樣的事情,從數據的數量4224.

一張表:

CREATE TEMPORARY TABLE temp_hex SELECT '11B3' AS szVersion; 
SELECT CONV(szVersion,16,10) & 0x1880 FROM temp_hex; 
-> 4224 

結果相同。作品:)

相關問題