4

TSQL を使用しようとすると、値が変数内にある場合に 16 進数を 10 進数に変換する際に問題が発生します。

私のコードは次のとおりです。

SET @hex = SUBSTRING(@x,1,2) --give 1e
SET @hex = '0x' + @hex
SELECT CAST (@hex AS int)

varchar 値を int に変換するときに変換に失敗したというエラーが表示されます

何が悪いのかわからず、今のところ解決策が見つかりません

何か案が?ありがとう

4

3 に答える 3

0
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    
于 2022-01-25T12:54:15.500 に答える