在Sybase中创建唯一的char值

时间:2011-10-07 14:51:49

标签: sql stored-procedures sybase

我需要创建一个Syb15存储过程,它接受一个char(6)@ parent并返回一个基于@parent的唯一char(6)。我想将@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)映射的新表将比处理“从符号像substring(@ parent,1,3)”的符号中选择符号所返回的列表更好,那么没关系。

感谢您的帮助,
贾里德

1 个答案:

答案 0 :(得分:2)

你回答了自己的问题。

确定您拥有的最大重复项数。使用许多唯一字符串创建查找表。加上意外事件等。在查找新值时,取现有值的MAX(),查找,找到下一个值。

是的,单独存储缩短的名称和后缀将有助于那里。


然而,就个人而言,我只使用INT作为后缀。不需要查找表; MAX(suffix) + 1