我需要创建一个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)”的符号中选择符号所返回的列表更好,那么没关系。
感谢您的帮助,
贾里德
答案 0 :(得分:2)
你回答了自己的问题。
确定您拥有的最大重复项数。使用许多唯一字符串创建查找表。加上意外事件等。在查找新值时,取现有值的MAX(),查找,找到下一个值。
是的,单独存储缩短的名称和后缀将有助于那里。
然而,就个人而言,我只使用INT作为后缀。不需要查找表; MAX(suffix) + 1
。