我有一个表tbl_login
,我希望我的列ID可以自动增加,也可以按字母顺序排列。请帮我。提前致谢。
ID Name Pass
101A Mohan 1234
102B Madan 4321
103C Ram 12334
答案 0 :(得分:1)
您总是可以将数值转换为alphabatical形式,因此您应该存储数值(101)并在需要时使用fn_NumericToAlphabatical
之类的函数将其转换为101A(您应该使用循环和{{1自己编写此函数)功能)
您应该使用序列生成数值
您可以创建计算持久列以提高性能
答案 1 :(得分:1)
非常好的问题。
i)此ID可以生成多少位数,例如10,000或1,00,000或更多
ii)你应该从101开始随机抛出更多的例子。特别是从4位数和5位数的少数几个例子。
iii)你将如何实现它。像你将插入单行或你将插入批量行。一旦要求明确,实施的SCRIPT可以根据需要进行优化和改变。
iv)测试我的脚本。首先从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