Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 функция  [new]
progist
Member

Откуда: Москва, Зеленоград
Сообщений: 273
надо построить выражение для ключа из лат букв типа AABC, причем найти последнее в указанной таблице, изменить букву на следующую, проверить уникальность в таблице и вернуть.
Как лучше это сделать?
Спасибо.
6 июл 03, 14:18    [252438]     Ответить | Цитировать Сообщить модератору
 Re: функция  [new]
guest007
Guest
Вы наверное хотите повторить 1с, лучше сделайте поле IDENTITY и не усложняйте себе жизнь, а если очень надо, то

1. select top 1 @lat = lat from table order by desc
2. @num = decode_to_int(@lat)
3. @lat = decode_to_lat(@num+1)
4. insert ...
6 июл 03, 16:32    [252450]     Ответить | Цитировать Сообщить модератору
 Re: функция  [new]
progist
Member

Откуда: Москва, Зеленоград
Сообщений: 273
спасибо,
identity конечно лучше, но если приходится выбирать между guid и самоделкой - ??
6 июл 03, 16:43    [252452]     Ответить | Цитировать Сообщить модератору
 Re: функция  [new]
axeval
Guest
Мне кажется можно использовать следующий алгоритм :

1. Выбрать max (key_value) - оно и должно быть последним.
2. Выделить n - символ (n = LEN (max (key_value)))
3. Если его ASCII код больше Z (или чего там надо) то
Выделить (n - 1) - символ (n = LEN (max (key_value)))
Возврат к п.3
иначе сразу
прибавить к коду 1 (не забыв если это номер позиции не n, обновить все позиции n, n-1, n-2, ну где остановились)

Значение по идее должно быть уникальным

Все.
6 июл 03, 16:45    [252454]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить