以下函数字数值转换上可能还存在错误需要进一步测试

 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