Below is a handy function for converting a hexadecimal value into an integer using a SQL Server user defined function.
IF OBJECT_ID('dbo.udfHex2Int') IS NOT NULL DROP FUNCTION dbo.udfHex2Int GO CREATE FUNCTION dbo.udfHex2Int ( @hexstr AS varchar(1000) ) -- Function converts VARCHAR representation of HEX to INT -- 'FF' --> 255 RETURNS INT AS BEGIN IF @hexstr IS NULL RETURN NULL DECLARE @curbyte AS int, @varbin AS varbinary(500) IF @hexstr LIKE '0x%' SET @hexstr = SUBSTRING(@hexstr, 3, 8000) SET @hexstr = CASE LEN(@hexstr) % 2 WHEN 1 THEN '0' ELSE '' END + @hexstr SET @varbin = 0x SET @curbyte = LEN(@hexstr) / 2 WHILE @curbyte > 0 BEGIN SET @varbin = CAST( CASE SUBSTRING(@hexstr, @curbyte * 2, 1) WHEN '0' THEN 0x00 WHEN '1' THEN 0x01 WHEN '2' THEN 0x02 WHEN '3' THEN 0x03 WHEN '4' THEN 0x04 WHEN '5' THEN 0x05 WHEN '6' THEN 0x06 WHEN '7' THEN 0x07 WHEN '8' THEN 0x08 WHEN '9' THEN 0x09 WHEN 'A' THEN 0x0A WHEN 'B' THEN 0x0B WHEN 'C' THEN 0x0C WHEN 'D' THEN 0x0D WHEN 'E' THEN 0x0E WHEN 'F' THEN 0x0F END | CAST( CASE SUBSTRING(@hexstr, @curbyte * 2 - 1, 1) WHEN '0' THEN 0x00 WHEN '1' THEN 0x10 WHEN '2' THEN 0x20 WHEN '3' THEN 0x30 WHEN '4' THEN 0x40 WHEN '5' THEN 0x50 WHEN '6' THEN 0x60 WHEN '7' THEN 0x70 WHEN '8' THEN 0x80 WHEN '9' THEN 0x90 WHEN 'A' THEN 0xA0 WHEN 'B' THEN 0xB0 WHEN 'C' THEN 0xC0 WHEN 'D' THEN 0xD0 WHEN 'E' THEN 0xE0 WHEN 'F' THEN 0xF0 END AS tinyint) AS binary(1)) + @varbin SET @curbyte = @curbyte - 1 END RETURN CAST(@varbin AS INT) END
