请教8位无重复字母ID如何生成,特殊需要要保存数据库,请提供代码谢谢

解决方案 »

  1.   


    //全是数字的随机数         ####-####-####-####
    //全是大写字母的随机数     $$$$-$$$$-$$$$-$$$$
    //大写字母和数字混合随机数 ****-****-****-****
    //前4位为1234后面分别是4位数字4位字母4位混合的随机数,没有分隔符 1234####$$$$****
    string str = null;MyRandom rnd1 = new MyRandom("****-####-####");for (int i = 0; i < 100; i++)
    {
         str += rnd1.GetRandomNum() + "<br />";
    }this.Label1.Text = str;
      

  2.   

    一楼说的方法可以,也可以调用newID函数然后substring下
      

  3.   

    NewGuid()
    然后转成字符串,截取8位行不行?
      

  4.   

    数据库的,转邹老大的东西:
    --5.2.3 生成纯字母随机编号的示例(大小写混合)
    --取得随机数的视图
    CREATE VIEW v_RAND
    AS
    SELECT re=STUFF(RAND(),1,2,'')
    GO--生成随机编号的函数
    CREATE FUNCTION f_RANDBH(@BHLen int)
    RETURNS varchar(50)
    AS
    BEGIN
    DECLARE @r varchar(50)
    IF NOT(ISNULL(@BHLen,0) BETWEEN 1 AND 50)
    SET @BHLen=10 SELECT @r=CHAR(
    CASE WHEN SUBSTRING(re,1,1)>5 THEN 97 ELSE 65 end
    +(SUBSTRING(re,1,1)
    +SUBSTRING(re,2,1)
    +SUBSTRING(re,3,1))%26)
    +CHAR(
    CASE WHEN SUBSTRING(re,4,1)>5 THEN 97 ELSE 65 end
    +(SUBSTRING(re,4,1)
    +SUBSTRING(re,5,1)
    +SUBSTRING(re,6,1))%26)
    FROM v_RAND
    WHILE LEN(@r)<@BHLen
    SELECT @r=@r+CHAR(
    CASE WHEN SUBSTRING(re,1,1)>5 THEN 97 ELSE 65 end
    +(SUBSTRING(re,1,1)
    +SUBSTRING(re,2,1)
    +SUBSTRING(re,3,1))%26)
    +CHAR(
    CASE WHEN SUBSTRING(re,4,1)>5 THEN 97 ELSE 65 end
    +(SUBSTRING(re,4,1)
    +SUBSTRING(re,5,1)
    +SUBSTRING(re,6,1))%26)
    FROM v_RAND
    RETURN(LEFT(@r,@BHLen))
    END
    GO--调用
    SELECT dbo.f_RANDBH(6),dbo.f_RANDBH(8)
    --结果: YZVBOj   LASCrhSO--5.2.3 生成纯字母随机编号的示例(仅大小或者小写)
    --取得随机数的视图
    CREATE VIEW v_RAND
    AS
    SELECT re=STUFF(RAND(),1,2,'')
    GO--生成随机编号的函数
    CREATE FUNCTION f_RANDBH(@BHLen int)
    RETURNS varchar(50)
    AS
    BEGIN
    DECLARE @r varchar(50)
    IF NOT(ISNULL(@BHLen,0) BETWEEN 1 AND 50)
    SET @BHLen=10 SELECT @r=CHAR(65
    +(SUBSTRING(re,1,1)
    +SUBSTRING(re,2,1)
    +SUBSTRING(re,3,1))%26)
    +CHAR(65
    +(SUBSTRING(re,4,1)
    +SUBSTRING(re,5,1)
    +SUBSTRING(re,6,1))%26)
    FROM v_RAND
    WHILE LEN(@r)<@BHLen
    SELECT @r=@r+CHAR(65
    +(SUBSTRING(re,1,1)
    +SUBSTRING(re,2,1)
    +SUBSTRING(re,3,1))%26)
    +CHAR(65
    +(SUBSTRING(re,4,1)
    +SUBSTRING(re,5,1)
    +SUBSTRING(re,6,1))%26)
    FROM v_RAND
    RETURN(LEFT(@r,@BHLen))
    END
    GO--调用
    SELECT dbo.f_RANDBH(6),dbo.f_RANDBH(8)
    --结果: UJXIJD  PAPGTQUX
      

  5.   

    1楼.将数据库的增长基数设为10000000 不明白?? 我的是varchar 8位
    2楼 MyRandom 怎么定义,有引用吗???8楼不错但是我想改都小写,怎么调用或者改
      

  6.   


    --5.2.3 生成纯字母随机编号的示例(仅大小或者小写)
    --小写,把65改成97
    --取得随机数的视图
    CREATE VIEW v_RAND
    AS
    SELECT re=STUFF(RAND(),1,2,'')
    GO--生成随机编号的函数
    CREATE FUNCTION f_RANDBH(@BHLen int)
    RETURNS varchar(50)
    AS
    BEGIN
        DECLARE @r varchar(50)
        IF NOT(ISNULL(@BHLen,0) BETWEEN 1 AND 50)
            SET @BHLen=10    SELECT @r=CHAR(97
                +(SUBSTRING(re,1,1)
                +SUBSTRING(re,2,1)
                +SUBSTRING(re,3,1))%26)
            +CHAR(97
                +(SUBSTRING(re,4,1)
                +SUBSTRING(re,5,1)
                +SUBSTRING(re,6,1))%26)
        FROM v_RAND
        WHILE LEN(@r)<@BHLen
            SELECT @r=@r+CHAR(97
                    +(SUBSTRING(re,1,1)
                    +SUBSTRING(re,2,1)
                    +SUBSTRING(re,3,1))%26)
                +CHAR(97
                    +(SUBSTRING(re,4,1)
                    +SUBSTRING(re,5,1)
                    +SUBSTRING(re,6,1))%26)
            FROM v_RAND
        RETURN(LEFT(@r,@BHLen))
    END
    GO
    select dbo.f_RANDBH(8)
    --kbdlllsa