Создать уникальное значение символа в Sybase - PullRequest
0 голосов
/ 07 октября 2011

Мне нужно создать хранимый процесс Syb15, который принимает char (6) @parent и возвращает уникальный char (6) на основе @parent. Я хочу обрезать @parent до 3 символов, а затем добавить к этому значению буквы [A-Z], чтобы новый символ ранее не использовался. Вот пример последовательности выполнения:

get_sub_symbol («DISNEY») возвращает «DISA»
get_sub_symbol ("DISNEY") возвращает "DISB"
get_sub_symbol ("GE") возвращает "GEA"
...
get_sub_symbol ("DISNEY") возвращает "DISZ"
get_sub_symbol («DISNEY») возвращает «DISAA»
get_sub_symbol ("DISNEY") возвращает "DISAB"
get_sub_symbol ("GE") возвращает "GEB"

Производительность важна, поэтому, если бы новая таблица с отображениями (symbol, last_suffix) была бы лучше, чем обработка списка, возвращаемого командой «выбрать символ из символов, где символ похож на подстроку (@parent, 1, 3)», то это все в порядке.

Спасибо за вашу помощь,
Джаред

1 Ответ

2 голосов
/ 07 октября 2011

Вы ответили на свой вопрос.

Определите максимальное количество дубликатов, которое у вас будет. Создайте таблицу поиска с таким количеством уникальных строк. Плюс непредвиденные обстоятельства и т. Д. При поиске нового значения возьмите MAX () из существующих значений, найдите его и найдите следующее.

И да, хранение сокращенного имени и суффикса отдельно поможет в этом.


Лично я бы просто использовал INT в качестве суффикса. Таблица поиска не требуется; MAX(suffix) + 1.

...