【发布时间】:2014-03-05 03:14:55
【问题描述】:
我有用作键的 char(4) 字段的表。生成的值(最大值 + 1)。但它没有达到最大值(9999)。无法更改列的数据类型,因为它在很多地方都使用过。
我想出了一个像下面这样的解决方案...
9999 -> A000...A999->B000...B999->Z999 -> ZA00->ZZZZ(zzzz再用10年就可以了)
请告诉我,除了执行 substring() 和字符串操作之外,还有一种简单的方法来生成它吗?
当前代码:
DECLARE @cle smallint
SELECT @cle = isnull(MAX(CONVERT(smallint,RTRIM(cle))),0) from smnf
INSERT INTO smnf (sup, cle, dsc, exc, dirty) VALUES (@sup, CONVERT(char(4), @cle+1), @dsc, 0, 'A')
【问题讨论】:
-
你能显示你的代码是什么吗?很难说其他事情是否更容易。另外,不要只使用整数标识列。
-
DECLARE @cle smallint SELECT @ cle = isnull(MAX(CONVERT(smallint,RTRIM(cle))),0) 从 smnf INSERT INTO smnf (sup, cle, dsc, exc, dirty) 值(@sup, CONVERT(char(4), @ cle+1), @ dsc, 0, 'A') 现在无法使用整数,因为这是 100 多个应用程序使用的字段
标签: sql sql-server key