SQL SERVER 16进制转10 进制

来源:互联网 发布:拼多多和淘宝哪个好 编辑:程序博客网 时间:2024/06/03 06:27
IF OBJECT_ID ('dbo.hexTodec') IS NOT NULL
    DROP FUNCTION hexTodec
GO


CREATE FUNCTION dbo.hexTodec(@s varchar(16))
RETURNS bigint
AS
BEGIN
--参数不得含'0'~'9'、'a'~'f'、'A'~'F'之外的任意字符(首尾空格除外),否则返回0
  DECLARE @i int,@result bigint
  SELECT @i=0,@result=0,@s=RTRIM(LTRIM(UPPER(REVERSE(@s))))
  WHILE @i<LEN(@s)
  BEGIN
    IF SUBSTRING(@s,@i+1,1) not between '0' and '9' and SUBSTRING(@s,@i+1,1) not between 'A' and 'F'
    BEGIN
      SELECT @result=0
      break
    END
    SELECT @result=@result+(CHARINDEX(SUBSTRING(@s,@i+1,1),'0123456789ABCDEF')-1)*POWER(16,@i),@i=@i+1
  END
  RETURN @result
END

GO



通过这个建个sql 函数,调用sql 函数实现16禁止转十进制

0 0
原创粉丝点击