LoginSignup
0
0

SQL Serverで16進数を10進数に変換する方法

Posted at

やりたいこと

  • 図のように文字列(nvarchar)で格納されている16進数の数値を10進数に変換する方法を備忘がてら投稿しておきます。
  • 1レコード目であれば18001と変換できればOKです。
    image.png

0xとは

  • そもそも0xとは16進数表記の目印だそうです。

16進数から10進数へ変換

  • データ型の変換方法としてCASTCONVERTがあるかと思いますので、どちらとも試してみました。
  • 結果はこちら↓
SELECT 
    [16進数の列], 
    CAST([16進数の列] as VARBINARY), 
    CAST(CAST([16進数の列] as VARBINARY) as int) 
FROM [dbo].[table]

image.png

SELECT 
    [16進数の列], 
    CONVERT(VARBINARY, [16進数の列], 1), 
    CONVERT(int, CONVERT(VARBINARY, [16進数の列], 1))
FROM [dbo].[table]

image.png

  • どちらもバイナリ型に変換してから整数型に変換しているのですが、結果としては、CASTだとうまく変換できず、CONVERTを使用すると正しく変換できました。
  • docsを確認したところ、バイナリ型への変換の際、0xが付く文字列の場合はCONVERTを使用してstyleを1に設定する必要があるようです。

CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0