【问题标题】:SQL Server Management Studio ZEROFILLSQL Server Management Studio ZEROFILL
【发布时间】:2013-02-27 13:36:32
【问题描述】:

我正在尝试使用 ZEROFILL 添加一个 auto_increment 主键,最大大小为 6。

所以它输出:

000001
000002 etc...

但是我真的很难做到这一点并且找不到答案。如何在 SQL Server Management Studio 中设置此列类型?

谢谢

【问题讨论】:

  • 你为什么要这样做?是为了展示吗?如果是这样,最好在这一端而不是db。不确定您是否可以在 MSSQL 中执行此操作。
  • 您提到了 SSMS,所以您使用的是 MS SQL Server,哪个版本?添加需要的标签
  • 对不起,字段类型是 int 而不是 Varchar,如第一次提到的。我已经添加了标签。

标签: sql sql-server-2008 ssms zerofill


【解决方案1】:

您不能在 SQL Server 中使用整数字段来执行此操作(我也不建议使用 Varchar)。

让 SQL Server 将字段存储为标识,然后(假设这是为了显示)在您选择数据时格式化数据,如下所示:

SELECT RIGHT('000000' + CONVERT(VARCHAR(6),ID), 6) FROM Table

【讨论】:

  • 该字段不用于显示其与其他软件的接口。
  • @Austin——也许使用身份字段,然后使用上面的内容创建一个视图。取决于你的需要。这只是实现前导零的一种方法。
【解决方案2】:

你想要达到的目标是不可能的。显示格式是在表示层而不是在数据库中完成的。您需要将值与值的表示分开。 1000001这两个值是一样的。

如果您想返回 格式化 的内容,则必须将值作为字符串返回。只需将其转换为字符串,在开头添加多个零,然后保留最左边的 n 个字符。

【讨论】:

    【解决方案3】:
    SELECT FORMAT(2, N'000000')
    --OR
    SELECT FORMAT(2, CAST(REPLICATE(0, 6) AS NVARCHAR(6)))
    

    https://docs.microsoft.com/en-us/sql/t-sql/functions/format-transact-sql?view=sql-server-ver15

    【讨论】:

      【解决方案4】:

      通过创建函数

      CREATE FUNCTION MyZeroFill (
       @N BIGINT,
       @D SMALLINT
       ) RETURNS VARCHAR(50) AS
      BEGIN
      RETURN RIGHT('0000000000000000000000000000000000000000000000'+CAST
      (@N AS VARCHAR),@D)
      END
      

      【讨论】:

        猜你喜欢
        • 2021-01-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-03
        • 2010-10-08
        相关资源
        最近更新 更多