SQL Server - 返回十六进制注册表值的十进制值

时间:2013-08-14 07:39:37

标签: sql sql-server-2008

我正在尝试从注册表中检索值并存储其INT值。注册表项是DWORD并且是十六进制格式,但是当使用xp_regread检索值时,它返回十六进制值,我需要十进制数字.....任何帮助?

Reg键:

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ShortCuts\General]
"Appointment Interval"=dword:0000000f

上述键的十进制值应为15

用于返回/存储值的代码:

    DECLARE @Interval INT

DECLARE @temp_table TABLE (Value nvarchar(500), Data nvarchar(500))
INSERT INTO @temp_table EXEC master.sys.xp_regread 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Wow6432Node\Shortcuts\General', 'Appointment Interval'
SELECT @Interval = Data FROM @temp_table

返回变量@Interval当前返回5

1 个答案:

答案 0 :(得分:1)

您可以首先将@temp_table中的数据列声明为VARBINARY(8),因为这将表示十六进制值。接下来,将数据字段分配给@Interval变量时,将其转换为INT,如下所示:

CONVERT(INT,Data)

希望这有帮助。