SQL Server转换十六进制的varchar值INT
我创建了一个T-SQL函数SQL Server转换十六进制的varchar值INT
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')
我的功能我得到一个错误:
Conversion failed when converting the varchar value '0x0000385A' to data type int.
请纠正我。
[编辑]
我想INT输出
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
copypaste更新您现有的功能。注意数据库在使用中(确保在添加:“USE [yourDBname] {new line} GO”之前更改 – 2013-04-25 08:22:37
非常感谢,@Mark – 2013-04-25 08:37:33
Pleasure @FrankMyatThu;) – 2013-04-25 08:37:54
尝试这一个 -
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
在Oracle中,
只是执行to_number
函数。
SELECT TO_NUMBER('AB','xx') FROM dual
就是这样。它会返回171号码。
感谢您编辑我的问题@marc_s – 2013-04-25 08:14:26