78377


カラムの定義が `char(6)`
となっているカラムにキャラクター文字列で16進数の数値が入っているのですが、それを通常の数値に変換する方法は無いでしょうか。

`'a','b','0','0','0','0'` というようにデータが入っています。

それを、int型の数値に(上記の場合だと `11206656` というように)変換するのはどうしたらいいでしょうか？

帳票に出力するのにそのカラムの中の数値をビット演算して出力するというようにしたいのですが、従来からあるデータベースなので今更変更は出来なくて、帳票用のデータをDB側で作らなければならなくて困っています。


CC BY-SA 4.0
2021-07-23T06:10:35.287
78375
2021-07-23T08:37:56.493
2021-07-23T06:42:44.097
3060
15047
question
sql sql-server
SQL Serverでキャラクターとして格納されている16進数の数値を、通常の数値に変換してビット演算したい


バイナリ形式へ変換して数値に変換すればいけるかと

[code]

    SELECT CONVERT(int, CONVERT(VARBINARY, 'ab0000', 2))
    
[/code]

[CAST および CONVERT (Transact-SQL)](https://docs.microsoft.com/ja-
jp/sql/t-sql/functions/cast-and-convert-transact-sql?view=sql-server-ver15)  
のバイナリ スタイルを参照してください

前ゼロ付加したいのであれば

[code]

    SELECT CONVERT(int, CONVERT(VARBINARY,right('000000'+TRIM('ab000'),6), 2))
    
[/code]

でいけるかと  
ただこれでも不正な文字があるとエラーになるだろうし、事前にデータのサニタイズは必要かもしれませんが


CC BY-SA 4.0
2021-07-23T07:33:45.583
78377
2021-07-23T08:37:56.493
2021-07-23T08:37:56.493
9811
9811
78375
answer