以下函数字数值转换上可能还存在错误需要进一步测试
create function nvarcahr_to_int (@param varchar(20))
returns int
begin
declare @bigdata bigint
declare @bigdatatemp bigint
declare @returndata int
set @returndata = 0
set @bigdata = 0
set @bigdata = cast(@param as bigint)
if @bigdata > 4294967295
begin
--set @bigdata = @bigdata & cast(4294967295 as bigint)
return 0
end
if @bigdata > 2147483647
begin
set @bigdatatemp = @bigdata ^ cast(4294967295 as bigint)
set @bigdata
= @bigdatatemp + 1
set @returndata = -(@bigdata)
end
else
begin
set @returndata = @bigdata
end
return @returndata
end
转载于:https://blog.51cto.com/shunge/693705