2016-06-23 4 views
1

mariadbのキャスト関数に問題があります。同じクエリを使用しても、SQL Serverとmariadbの結果は異なります。 SQL Serverではmariadbで整数をバイナリにキャストする方法

:mariadbで

Query: select CAST(1234 as binary(10)) 
Result: 0x000000000000000004D2 

Query: select CAST(1234 as binary(10)) 
Result: 1234 

私はそれを理解していません。説明して解決策を提案してください。

+1

私は(それがmariadb内の文字列データ型です)のバイナリが実際にmariadbに何を意味するのかグーグルで提案する、と何かを使用しますあなたの必要に応じてhex()のように。 – ZLK

+0

ありがとう@ZLK。あなたの提案はこの問題を憂慮した。この場合、hex()が役立ちます –

答えて

0

binaryは文字型ですが、式の16進値を取得する関数はhexです。

select hex(1234); 
+-----------+ 
| hex(1234) | 
+-----------+ 
| 4D2  | 
+-----------+ 

あなたが同じフォーマットをしたい場合、それは他の機能を使用して行うことができます。

select concat('0x', lpad(hex(1234),20,'0')) ; 
+--------------------------------------+ 
| concat('0x', lpad(hex(1234),16,'0')) | 
+--------------------------------------+ 
| 0x000000000000000004D2    | 
+--------------------------------------+