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

如何在SQL中合并列生成指定格式的DocNo字段?

生成指定格式DocNo字段的SQL实现

直接通过字符串拼接即可实现需求,以下是两种兼容不同SQL Server版本的写法:

方法一:使用FORMAT函数(SQL Server 2012及以上版本)

SELECT
    module,
    cycle,
    autoNum,
    module + FORMAT(cycle, 'yyMM') + '-' + FORMAT(autoNum, '00000') AS DocNo
FROM [Inventory].[dbo].[tbl_invoiceGIN]
  • FORMAT(cycle, 'yyMM'):将Date类型的cycle转换为两位年份+两位月份的字符串(如2023年1月转为2301)
  • FORMAT(autoNum, '00000'):将int类型的autoNum格式化为5位补零字符串(如1转为00001)
  • 用+拼接三个部分并添加分隔符-,得到IN2301-00001格式的DocNo

方法二:兼容低版本SQL Server(2012之前)

如果你的SQL Server版本不支持FORMAT函数,可以用CONVERT和字符串截取的方式实现:

SELECT
    module,
    cycle,
    autoNum,
    module + RIGHT(CONVERT(varchar(8), cycle, 112), 4) + '-' + RIGHT('00000' + CAST(autoNum AS varchar(5)), 5) AS DocNo
FROM [Inventory].[dbo].[tbl_invoiceGIN]
  • RIGHT(CONVERT(varchar(8), cycle, 112), 4):先将日期转为yyyyMMdd格式,再截取后4位得到yyMM格式的字符串
  • RIGHT('00000' + CAST(autoNum AS varchar(5)), 5):通过拼接5个零后截取最后5位,实现补零效果

如果确实需要使用yyyyMM(6位,如202301)格式的cycle,只需将上述代码中的yyMM替换为yyyyMM,或调整截取长度即可,最终会得到IN202301-00001格式的结果。

内容的提问来源于stack exchange,提问作者So Phea

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 11:28:06