TSQL を使用しようとすると、値が変数内にある場合に 16 進数を 10 進数に変換する際に問題が発生します。
私のコードは次のとおりです。
SET @hex = SUBSTRING(@x,1,2) --give 1e
SET @hex = '0x' + @hex
SELECT CAST (@hex AS int)
varchar 値を int に変換するときに変換に失敗したというエラーが表示されます
何が悪いのかわからず、今のところ解決策が見つかりません
何か案が?ありがとう
TSQL を使用しようとすると、値が変数内にある場合に 16 進数を 10 進数に変換する際に問題が発生します。
私のコードは次のとおりです。
SET @hex = SUBSTRING(@x,1,2) --give 1e
SET @hex = '0x' + @hex
SELECT CAST (@hex AS int)
varchar 値を int に変換するときに変換に失敗したというエラーが表示されます
何が悪いのかわからず、今のところ解決策が見つかりません
何か案が?ありがとう
CREATE FUNCTION dbo.FN_HEXTOINT(@HEX varchar(MAX) = NULL)
RETURNS @RETORNO TABLE(INTHEX INT)
AS
BEGIN
SET @HEX = UPPER(@HEX)
DECLARE @TABHEX VARCHAR(16) = '0123456789ABCDEF'
DECLARE @CHARX VARCHAR(1)
DECLARE @POSCHARX INT
DECLARE @BASE INT = 16
DECLARE @I INT = LEN(@HEX)
DECLARE @LENSTR INT = LEN(@HEX)
DECLARE @EXPOENTE INT = 36
DECLARE @N10 FLOAT = 0.01
WHILE (@I> 0)
BEGIN
SET @CHARX = SUBSTRING (@HEX, @i,1)
SET @POSCHARX = PATINDEX('%'+@CHARX+'%', @TABHEX);
IF @POSCHARX > 0
BEGIN
SET @N10 = @N10 + ((@POSCHARX - 1) * POWER(@BASE, (@LENSTR-@I)))
END
SET @I = @I - 1
END
INSERT INTO @RETORNO
SELECT (ROUND(@N10 + 0.001,1)) AS RET
RETURN
END