【问题标题】:How to add leading zeros to a auto numbering ID如何将前导零添加到自动编号 ID
【发布时间】:2018-02-06 04:13:39
【问题描述】:

我需要在文件中添加一个“TransactionID”——它将是一个唯一标识每条记录的数字。必须全部为数字字符,使用前导零来完成该字段。数据类型为文本,最大长度为 12。

所以 1 将是“000000000001”,如果数字是 1657,那么它应该打印“00000001657”。

我这样做了,但 TransactionID 没有前导零,所以我需要帮助来添加前导零。我正在使用 SQL Server Management Studio。

CREATE TABLE TMP_TOC_FINAL (
      Agency_Code VARCHAR(3)
    , Consumer_ID INT
    , Program_Area_ID INT
    , Discharge_Status VARCHAR(2)
    , Admit_Date NVARCHAR(20)
    , Discharge_Date NVARCHAR(20)
    , TransactionID INT identity (1,1) Primary key

真正的程序员离开了,我正在尽最大努力修复他离开的地方。

谢谢!

【问题讨论】:

标签: sql sql-server


【解决方案1】:

如果您使用的是 SQL Server,那么您很幸运。您可以使用计算列。我会将标识列放在首位,因此表格如下所示:

CREATE TABLE TMP_TOC_FINAL (
     TransactionID INT identity (1,1) Primary key,
     Agency_Code VARCHAR(3),
     Consumer_ID INT,
     Program_Area_ID INT,
     Discharge_Status VARCHAR(,2),
     Admit_Date NVARCHAR(20)
     Discharge_Date NVARCHAR(20), 
     TransactionId_str as (right(replicate('0', 12) + cast(TransactionID as varchar(12)), 12)
);

您现在可以将TransactionId_str 用于您的输出。我应该注意,整数最大为 2,000,000,000 左右——即 10 位数字,而不是 12 位。

【讨论】:

  • 你能解释一下这一行 TransactionId_str as (right(replicate('0', 12) + cast(TransactionID as varchar(12)), 12) 吗?
  • 感谢最后一行工作。我现在唯一的问题是该文件应该只有 7 列,并且顶部的 TransactionID INT 标识 (1,1) 主键 - 它算作一列。有没有办法隐藏这个?
  • @EFlojo 。 . .并不真地。如果您不希望基表看起来像有附加列,则可能需要使用视图。但是,我建议您列出所需的列,而不是使用*。这可能会解决您的问题。
  • 谢谢戈登!
猜你喜欢
  • 1970-01-01
  • 2019-02-10
  • 2014-09-09
  • 1970-01-01
  • 2020-06-07
  • 1970-01-01
  • 2021-11-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多