テーブル定義を変更できる場合 (*)、基本的な値を完全に数値のままにして、これらの文字列にフォーマットするだけの方が簡単です。
create table T (
CoreValue int not null,
DisplayValue as CONVERT(varchar(10),(CoreValue / 26)+1) + CHAR(ASCII('A') + (CoreValue-1) % 26)
)
go
insert into T (CoreValue)
select ROW_NUMBER() OVER (ORDER BY so1.object_id)
from sys.objects so1,sys.objects so2
go
select * from T
結果:
CoreValue DisplayValue
----------- ------------
1 1A
2 1B
3 1C
4 1D
5 1E
6 1F
....
22 1V
23 1W
24 1X
25 1Y
26 2Z
27 2A
28 2B
29 2C
....
9593 369Y
9594 370Z
9595 370A
9596 370B
9597 370C
9598 370D
9599 370E
9600 370F
9601 370G
9602 370H
9603 370I
9604 370J
したがって、新しい値を挿入するのは、列から を取得して 1 を追加するのと同じくらい簡単ですMAX
(複数のユーザーに対処するために、シリアライズ可能な分離などを想定しています)。
(*) テーブル定義を変更できない場合でも、このテーブルを生成します。MAX
次に、それを元のテーブルに結合し、それを使用して列に対して単純な操作を実行しint
、次に使用する英数字の値を追加して検索することができます。使用すると予想される値をいくつでも入力するだけです。