如何写一个返回值是int数据类型的newid()函数
能否写一个函数,就象限newid()一样,只是返回的数据类型是int型的,

解决方案 »

  1.   

    select cast(cast(replace(newid(),'-','')as binary)as int)
      

  2.   

    select id = right('0000000000' + cast(cast(rand(checksum(newid()))*1000000000 as int) as varchar),10) from sysobjects
      

  3.   

    --出来的是字符型.
    select id = right('0000000000' + cast(cast(rand(checksum(newid()))*1000000000 as int) as varchar),10) from sysobjects--如果要INT(估计得bigint才行)
    select id = cast(left(cast(cast(rand(checksum(newid()))*1000000000 as int) as varchar) + '0000000000',10) as bigint) from sysobjects
      

  4.   


    select cast(cast(replace(newid(),'-','')as binary)as bigint)
    --int不行,要用bigint
      

  5.   

    create function f_newid()
    returns bigint
    as
    begin
        return abs(cast(checksum(newid() )as bigint))
    end
    go
      

  6.   

    create table tb(id int,name varchar(50)) 
    insert into tb select 1,'a' 
    insert into tb select 2,'b' alter table tb add randnum int update tb set randnum= abs(checksum(newid()))%100--控制在100以内的随机数 select * from tb
      

  7.   

    试试这个
    create function f_newid() 
    returns bigint 
    as 
    begin 
        return abs(cast(checksum(newid() )as bigint)) 
    end 
    go