2

我创建了一个 T-SQL 函数

CREATE FUNCTION dbo.GetDecimalFromHexa (@HexValue VARCHAR(10))
RETURNS INT
BEGIN
   IF (CHARINDEX('0x',@HexValue) = 0)
      SET @HexValue = '0x' + @HexValue
   RETURN CONVERT(INT, @HexValue )    
END

然后我这样调用我的函数

SELECT dbo.GetDecimalFromHexa ('0000385A')

我收到一个错误:

将 varchar 值“0x0000385A”转换为数据类型 int 时转换失败。

请纠正我。

[编辑]
我想得到 int 输出

4

3 回答 3

5
ALTER FUNCTION [dbo].[GetDecimalFromHexa] (@HexValue VARCHAR(10))
RETURNS INT
BEGIN
   IF (CHARINDEX('0x',@HexValue) = 0)
      SET @HexValue = CONCAT ('0x', @HexValue)
   RETURN CONVERT(INT, CONVERT(varbinary, @HexValue, 1))    
END
GO
于 2013-04-25T08:20:59.200 回答
0

试试这个——

SELECT CAST(CONVERT(VARBINARY(4), '0000385A', 2) AS INT)

或者试试这个 -

CREATE FUNCTION dbo.GetDecimalFromHexa 
(
    @HexValue VARCHAR(10)
)
RETURNS INT
BEGIN

   RETURN CAST(CONVERT(VARBINARY(4), @HexValue, 2) AS INT)

END
于 2013-04-25T08:23:13.740 回答
0

在甲骨文中,

只需执行to_number功能。

SELECT TO_NUMBER('AB','xx') FROM dual

就是这样。它将返回 171 个数字。

于 2017-08-24T08:00:15.140 回答