Функция автоматического создания в SQL Server 2000 - PullRequest
2 голосов
/ 10 октября 2010

У меня есть таблица с именем «Клиент».

Эта таблица содержит уникальное поле «Идентификация» для каждого клиента с именем «CustomerNo». Он должен быть в формате: сначала алфавит, начиная с A-Z.

Затем четырехзначное число, начинающееся с 1-9999, а следующее - трехзначное число, начинающееся с 1-999. Это уникальное поле. Поэтому оно не должно повторяться в таблице Customer.

Например: A1000-100.

Есть ли какая-либо функция для генерации этого формата?

Table structure
-----------------------
CustomerID         CustomerName          CustomerNo

1                 John                   A1000-100
2                 Sajan                  A1001-100

1 Ответ

2 голосов
/ 10 октября 2010

Вы можете просто использовать обычный столбец идентификаторов с автоинкрементом и следующую формулу (возможно, в производном столбце), чтобы сопоставить это с форматом отображения.

CHAR((id-1)/9999/999 + 65) + 
RIGHT('0000' + CAST(1 + (id-1)%(999*9999)/999 AS VARCHAR(4)),4) + 
'-' + 
RIGHT('000' + CAST(1 + (id-1)%999 AS VARCHAR(3)),3)

Это избавит вас от необходимости иметь делос любыми проблемами параллелизма.

...