2017-07-03 43 views
-1

我有一个表tbl_login,我想我的列ID是自动增量和字母也。请帮帮我。提前致谢。如何按字母顺序实现自动增量列值?

ID  Name Pass 
101A Mohan 1234 
102B Madan 4321 
103C Ram  12334 
+2

显示一些样本.. –

+5

这似乎不太合理。数字标识有什么问题? –

+2

'126Z'后的值应该是多少? –

回答

1

很不错的问题数值。

I)可高达多少位?像10000 1,00,000或更多

ii)您应该抛出多一点例子来生成该ID从101开始随机扔.specially从4位数和少数几个例子从5位数字。 3)你将如何实现它。你会插入单行还是插入批量行。一旦需求清晰,实施SCRIPT可以根据需求进行优化和改变。

IV)测试我的script.First彻底从101之间的任意数字测试,以921

只要改变@input的价值

DECLARE @Input INT = 127--change here 
DECLARE @Output VARCHAR(10) = '' 
    ,@TempOutput VARCHAR(10) = '' 
DECLARE @Base INT = 100 
    ,@z INT = 26 
    ,@Rem INT 
DECLARE @Tempinput INT = @Input 

WHILE (
     @Tempinput > 0 
     AND @input > @Base + @z 
     ) 
BEGIN 
    SET @TempOutput = '' 

    IF (@Tempinput > @Base) 
    BEGIN 
     SET @Rem = @Tempinput % @Base 
    END 

    IF (
      (@Rem % @z) = 0 
      AND (@Rem/@z) > 1 
      ) 
    BEGIN 
     SET @Tempinput = (@Rem/@z) - 1 
     SET @Rem = @Rem % @z 

     PRINT '23' 
    END 
    ELSE 
    BEGIN 
     IF (@Rem > @z) 
     BEGIN 
      SET @Tempinput = @Rem/@z 
      SET @Rem = @Rem % @z 

      PRINT @Tempinput 
     END 
     ELSE 
     BEGIN 
      SET @Rem = @Tempinput % @z 
      SET @Tempinput = @Tempinput/@z 
     END 
    END 

    IF (
      @Rem > 0 
      AND @Rem <= @z 
      ) 
     SET @TempOutput = CHAR(@Rem + 64) 
    ELSE IF (@Rem = 0) 
     SET @TempOutput = 'Z' 
    SET @Output = @TempOutput + @Output 
END 

IF (@input <= @Base + @z) 
    SET @Output = CHAR((@input % @Base) + 64) 

SELECT cast(@Input AS VARCHAR(10)) + @Output 
0

您可以随时转换数值为alphabatical形式,所以你应该存储的数值(101),并在需要时用之类的函数fn_NumericToAlphabatical(你应该使用循环和CHAR功能自己写这个函数)转换为101A

你应该生成序列

您可以创建计算列持续改善性能比较