2017-07-03 88 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

你應該生成序列

您可以創建計算列持續改善性能比較