**已关闭。**此问题需要debugging details。当前不接受答案。
编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
7天前关闭。
Improve this question
我正在尝试创建存储在数据库中的序列。因此,只需一个服务调用,我就应该按顺序获得新的序列,如AAB。下一个调用应该返回AAC,下一个AAD...... AA9,阿坝......我尝试创建三个数字序列0〈=first_seq〈36,也像这个second_seq,third_seq。我正在使用Spring Hibernate,postgresql。
3条答案
按热度按时间pbossiut1#
你的问题很含糊你应该至少指明需要Java或Postgres解决方案。下面给出了一个完全通用的Postgres解决方案,只给出了前面的 sequence 和一个带有有序数字集的字符串。它创建了2个CTE,第一个定义了数字,然后第二个“构建”了一个工作变量集。最后,主sql构建了下一个序列。这是在一个语句中处理的,嵌套在一个sql函数中。(请参阅demo)
注意:作为一个SQL函数,它可以作为一个独立的语句被提取和运行。您只需要将 * 当前序列 * 作为一个参数传递。
编辑:回复Vérace。我没有得到生成整个序列,因为如所述 Next call应该返回AAC,next(call)AAD ...。此外,来自
... AA9, ABA...
的序列没有结尾。但不需要修改函数,您可以在递归查询中使用它。g6baxovj2#
试试这个。
和
输出功率
643ylb083#
首先,我这样做了(下面的所有代码都是here)。
结果:
但是,您希望它排序为
AAA
,AAB
...但是1
在ASCII表中位于A
之前,因此我们必须执行以下操作:结果:
这样,我们就有了正确的排序顺序。
我们可以把所有这些放在一个函数中,如下所示:
和运行:
结果:
感谢@Belayer的code为我们提供了功能上的灵感!