declare @str varchar(16)
set @str='135'
set @str=@str+cast(cast(rand()*10 as int) as varchar)
set @str=@str+cast(cast(rand()*10 as int) as varchar)
set @str=@str+cast(cast(rand()*10 as int) as varchar)
set @str=@str+cast(cast(rand()*10 as int) as varchar)
set @str=@str+cast(cast(rand()*10 as int) as varchar)
set @str=@str+cast(cast(rand()*10 as int) as varchar)
set @str=@str+cast(cast(rand()*10 as int) as varchar)
set @str=@str+cast(cast(rand()*10 as int) as varchar)
print @str

解决方案 »

  1.   

    declare @str varchar(16)
    set @str='135'
    set @str=@str+cast(cast(rand()*10000000000000 as decimal(13,0)) as varchar)
    print @str
      

  2.   

    不好意思,位数错了,被varchar(16)误导了,应该是:declare @str varchar(11)
    set @str='135'
    set @str=@str+cast(cast(rand()*100000000 as decimal(13,0)) as varchar)
    print @str
      

  3.   

    又是bug,decimal(13,0)改成decimal(8,0)较好.
      

  4.   

    declare @str varchar(16)
    set @str='135'
    select @str = @str + cast(CAST( RAND()*100000000 as int) as varchar(9))
    select @str
      

  5.   

    select
      '135'+ltrim(cast(rand()*100000000 as int))
    from
       tb
      

  6.   

    怎么把它写入表的TEL列里面去呢?表总共有33条记录。
    declare @str varchar(16)
    set @str='135'
    set @str=@str+cast(cast(rand()*10 as int) as varchar)
    set @str=@str+cast(cast(rand()*10 as int) as varchar)
    set @str=@str+cast(cast(rand()*10 as int) as varchar)
    set @str=@str+cast(cast(rand()*10 as int) as varchar)
    set @str=@str+cast(cast(rand()*10 as int) as varchar)
    set @str=@str+cast(cast(rand()*10 as int) as varchar)
    set @str=@str+cast(cast(rand()*10 as int) as varchar)
    set @str=@str+cast(cast(rand()*10 as int) as varchar)
    print @str
      

  7.   

    insert into tb(tel)
    select '135'+ltrim(cast(rand()*100000000 as int))
    union all select '135'+ltrim(cast(rand()*100000000 as int))
    union all select '135'+ltrim(cast(rand()*100000000 as int))
    union all select '135'+ltrim(cast(rand()*100000000 as int))
    union all select '135'+ltrim(cast(rand()*100000000 as int))
      

  8.   


    declare @str varchar(11)
    set @str='135'
    set @str=@str+left(ABS(checksum(newid())),8)
    select @str