1. ホーム
  2. sql

整数から16進数、16進数から整数に変換する

2023-08-29 11:41:20

質問

というわけで、私はこのクエリを動作させています(ここで signal_data がカラムである場合)、Sybase では動作しますが、Microsoft SQL Server では動作しません。

HEXTOINT(SUBSTRING((INTTOHEX(signal_data)),5,2)) as Signal

また、Excelでも(ここで A1 には値が含まれています)。

=HEX2DEC(LEFT(DEC2HEX(A1),LEN(DEC2HEX(A1))-2))

SQL Serverでこれを行う方法をご存知の方はいらっしゃいますか?

どのように解決するのですか?

INTを16進数に変換してください。

SELECT CONVERT(VARBINARY(8), 16777215)

16進数をINTに変換する。

SELECT CONVERT(INT, 0xFFFFFF)

更新日 2015-03-16

上記の例には、HEX値が整数リテラルとして与えられたときのみ動作するという制限があります。完全を期すために、変換する値が16進文字列(varchar列で見られるような)である場合は、以下を使用します。

-- If the '0x' marker is present:
SELECT CONVERT(INT, CONVERT(VARBINARY, '0x1FFFFF', 1))

-- If the '0x' marker is NOT present:
SELECT CONVERT(INT, CONVERT(VARBINARY, '1FFFFF', 2))

注意 文字列は偶数の16進数を含まなければなりません。奇数の場合はエラーとなります。

より詳細な情報は CAST および CONVERT (Transact-SQL) . SQL Server 2008以降が必要だと思います。