SET NOCOUNT ON
DECLARE @hex VARCHAR(10)
DECLARE @stmt NVARCHAR(255)
DECLARE @int INT
SET @hex = '0x0000008A'
SELECT @stmt = N'SELECT @int = CONVERT( int , ' + @hex + ' )'
EXEC sp_ExecuteSql @stmt, N' @int Int Out', @int OUT SELECT @int GO
GO
GO
-----------
138
In die andere Richtung funktioniert:
DECLARE @dec VARBINARY(10)
DECLARE @result VARCHAR(10)
SET @dec = 138
EXEC master..xp_varbintohexstr @dec, @result OUT
SELECT @result
GO
----------
0x0000008A
Interessanterweise liefern folgende Statement komplett andere Werte. Erst in der dynamischen Variante erscheinen die erwarteten Werte:
SELECT CAST(CAST('0x0000008A' AS VARBINARY) AS INT)
SELECT CONVERT( INT, CONVERT( VARBINARY, '0x8A' ) )
GO
SET NOCOUNT OFF
-----------
808466497
-----------
813185089