gpt4 book ai didi

sql - 创建字母数字序列

转载 作者:行者123 更新时间:2023-12-04 22:59:23 25 4
gpt4 key购买 nike

我想创建一个生成如下值的序列:

A00000000
A00000001
..
..
..
A99999999
B00000000
B00000001
..
..

它应该使用初始字母字符 A 生成,一旦到达 A99999999 就应该更改为 B,依此类推。

Oracle 中的正常序列不会给出字母数字序列。如何在此模式中生成顺序值?

最佳答案

您必须创建 1 个序列和 1 个转换函数:

CREATE SEQUENCE num_seq
START WITH 6500000000
INCREMENT BY 1
MAXVALUE 9099999999;

FUNCTION next_id(seq_name) RETURN VARCHAR2 IS
x VARCHAR2(28);
BEGIN
EXECUTE IMMEDIATE 'SELECT TRIM(TO_CHAR(' || seq_name || '.NextVal)) FROM dual' INTO x;
RETURN CHR(TO_NUMBER(SUBSTR(x, 1, 2))) || SUBSTR(x, 3);
END;

该函数从 A00000000 生成 ID至 Z99999999当用 next_id('num_seq') 调用时.诀窍是 CHR(ascii_code)函数,它返回位置 65-90 上的字符,即 A-Z。

已编辑:
函数变得更通用 - 您可以将任何序列作为参数传递,您可以简单地在 SEQUENCE 定义的 START WITH 和 MAXVALUE 子句中添加/删除数字,而无需更改函数。

关于sql - 创建字母数字序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30754243/

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