gpt4 book ai didi

sql - 生成连续的客户端编号

转载 作者:行者123 更新时间:2023-12-02 16:02:34 25 4
gpt4 key购买 nike

我有一个基于客户端的系统,需要以下形式的连续客户端编号。

第一个客户将获得 A001,然后每个新客户将获得 A999。一旦到达A999,它将继续B001-B999,依此类推,直到Z001-Z999,此时它将重置为AA001-AA999,依此类推。

有人知道如何实现这一目标吗?

最佳答案

这将为您提供从 A001 到 ZZ999 的确切号码。如果您想要更多的数字,则需要为第三个字母添加逻辑,等等。请注意,每个字母不会获得 1000 个数字,这会让事情变得稍微有点尴尬。

WITH Numbers AS (
SELECT 1 AS number
UNION ALL
SELECT number + 1 AS number FROM Numbers WHERE number < 701298)
SELECT
number,
CASE WHEN number > 25974 THEN CHAR(64 + (number - 1) / 25974) ELSE '' END --This is the first letter (optional)
+ CHAR(65 + ((number - 1) / 999) % 26) --This is the second letter
+ FORMAT(CASE WHEN number < 1000 THEN number ELSE CASE WHEN number % 999 = 0 THEN 999 ELSE number % 999 END END, 'd3') --This is the three digit number
AS client_id
FROM
Numbers
OPTION (MAXRECURSION 0);

数字 CTE 只是为了获得合适数量的数字 (1 - 701,298)。一旦我有了它们,我需要找到第二个字母变化(每 999 个数字)或第一个字母变化(每 26 * 999 = 25974 个数字)时的边界。请注意,第一个字母在需要时会被隐藏。

这将为您提供 27 * 26 * 999 个客户端 ID(第一个字母可以是空白或 A-Z = 27 个选项,第二个字母可以是 A-Z = 26 个选项,数字可以是 001-999 = 999 个选项)。总共有 701,298 个客户端 ID。

我建议使用 IDENTITY 列或 SEQUENCE 来获取“内部”id(这将是主键候选),然后使用函数根据该数字计算客户端 ID。这对于多个用户来说更安全,等等。您可以使用计算列,但这是一个相当大的开销?

关于sql - 生成连续的客户端编号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48322221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com