private string GenerateStringID()
        {
            long i = 1;
            foreach (byte b in Guid.NewGuid().ToByteArray())
            {
                i *= ((int)b + 1);
            }
            return string.Format("{0:x}", i - DateTime.Now.Ticks);
        }
以上方法是在C#里格式化GUID,可以输出16位保证不重复。网上查来的。
现在问题是:如何在数据库[存储过程]生成GUID并且格式化为16位(横杠去掉),并且不重复,有算法吗?

解决方案 »

  1.   


    --?
    select replace(ltrim(newid()),'-','')
      

  2.   


    select left(replace(ltrim(newid()),'-',''),16)
    select right(replace(ltrim(newid()),'-',''),16)
    --可能会重复,即使不直接用newid,也可能重复,只是机率大小问题
      

  3.   

    也不一定要用guid,楼主定义一个16位的流水号规则,获取对应的流水号应该也可以。
      

  4.   

    SQL SERVER里的去左边空格的,我把它当作转化字符串的作用来用。
    其实LZ可以用年月日小时分钟微秒再加个随机数来实现,不一定要用GUID
      

  5.   

    http://blog.csdn.net/wenhuijoe/article/details/5317430
    http://www.cnblogs.com/About690878778/archive/2011/04/19/2020782.html