You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle查询中如何将SYSDATE与序列号拼接生成唯一ID

Oracle拼接序列号与日期生成唯一ID

当然可以用||运算符实现拼接,以下是调整后的查询语句:

SELECT 
    (NVL(MAX(RII_INDENT_ID_SL), 0) + 1) || '-' || TO_CHAR(SYSDATE, 'DD/MM/YYYY') AS UNIQUE_ID
FROM T_RAKE_INDENT_IBMD;

各部分说明:

  • NVL(MAX(RII_INDENT_ID_SL), 0) + 1:保留你原有的序列号生成逻辑,从表中取最大序号加1,确保序号递增
  • TO_CHAR(SYSDATE, 'DD/MM/YYYY'):把系统日期格式化为你需要的日/月/年格式(对应示例中的23/09/2022)
  • ||:Oracle中的字符串拼接运算符,用来把序号、分隔符-和格式化后的日期拼接成最终的唯一ID字符串

额外提醒:

这种基于表最大值生成序号的方式,在多用户并发操作时可能会出现重复ID的问题(多个会话同时读取到相同的最大值,然后都加1生成重复序号)。如果是生产环境,更推荐用Oracle的序列(SEQUENCE)来生成可靠的自增序号:

-- 先创建序列(只需执行一次)
CREATE SEQUENCE SEQ_RAKE_INDENT_ID
START WITH 1
INCREMENT BY 1
NOCACHE;

-- 生成带日期的唯一ID
SELECT SEQ_RAKE_INDENT_ID.NEXTVAL || '-' || TO_CHAR(SYSDATE, 'DD/MM/YYYY') AS UNIQUE_ID FROM DUAL;

如果必须依赖表中现有数据生成序号,建议在事务中对表加锁(比如用SELECT ... FOR UPDATE),避免并发冲突。

内容的提问来源于stack exchange,提问作者Abhipsa Mohapatra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 18:55:18