質問: カラムの定義が `char(6)` となっているカラムにキャラクター文字列で16進数の数値が入っているのですが、それを通常の数値に変換する方法は無いでしょうか。 `'a','b','0','0','0','0'` というようにデータが入っています。 それを、int型の数値に(上記の場合だと `11206656` というように)変換するのはどうしたらいいでしょうか? 帳票に出力するのにそのカラムの中の数値をビット演算して出力するというようにしたいのですが、従来からあるデータベースなので今更変更は出来なくて、帳票用のデータをDB側で作らなければならなくて困っています。
回答: バイナリ形式へ変換して数値に変換すればいけるかと ``` SELECT CONVERT(int, CONVERT(VARBINARY, 'ab0000', 2)) ``` CAST および CONVERT (Transact-SQL) のバイナリ スタイルを参照してください 前ゼロ付加したいのであれば ``` SELECT CONVERT(int, CONVERT(VARBINARY,right('000000'+TRIM('ab000'),6), 2)) ``` でいけるかと ただこれでも不正な文字があるとエラーになるだろうし、事前にデータのサニタイズは必要かもしれませんが