字段 a b我想把字段b批量更新为 6位的全数子随机数

解决方案 »

  1.   


    update tb set b = left(newid(),6)
      

  2.   


    老乌龟速度够快,就不跟你写一样的。哈哈
    update tb set b=right(newid(),6)
      

  3.   

     declare     @num     int   
      set     @num=abs(convert(int,checksum(newid())))   
      select left(@num,6)
       
      set     @num=abs(convert(int,checksum(getdate())))   
      select right(@num,6)  
      

  4.   

    update tb set b = left(newid(),6)
     
    更新了字段b 全部为一个随机数
     
    我想要的结果是 表有n行把字段b更新为不相同的随机数
      

  5.   

    SELECT LEFT(LTRIM(STR(1000000000000*RAND(),20)),6)
      

  6.   

    SELECT LEFT(LTRIM(STR(1000000000000*RAND(),20)),6)
    鉴定通过!!!
      

  7.   

    update tb set b = left(cast(1000000*rand() as varchar),6)
      

  8.   

    潇洒老乌龟,1000000*rand()这个数好象不是很正确,有可能产生少于6位的数字
      

  9.   

    我说的是我想更新字段b为6位随机数 b字段有n行 尽量每行数据不要相同  
      

  10.   

    update tb set b=LEFT(LTRIM(STR(1000000000000*RAND(),20)),6)
      

  11.   

    这样更新只会把全部的字段b都更新成相同的随机数我想要的是b字段的n行随机数尽量不相同 啊啊啊啊啊啊啊啊啊  
      

  12.   


    实在不行就这样--1:
    alter table t
    add id int identity(1,1)--2:select id1=identity(1,1),id2=identity(111111,1) into #t from syscolumns,sysobjects--3
    update t
    set b=b.id2
    from t a left join #t b
    on a.id=b.id1
      

  13.   

    SET NOCOUNT ON
    DECLARE @A VARCHAR(10)
    DECLARE vendor_cursor CURSOR FOR 
    SELECT A FROM TABLENAME
    OPEN vendor_cursor
    FETCH NEXT FROM vendor_cursor  INTO @A
    WHILE @@FETCH_STATUS = 0
    BEGIN
    update tb set b=LEFT(LTRIM(STR(1000000000000*RAND(),20)),6) WHERE A=@A
    FETCH NEXT FROM vendor_cursor INTO @A
    END 
    CLOSE vendor_cursor
    DEALLOCATE vendor_cursor