【问题标题】:How to concatenate two strings in sql and pad one string with 0's?如何在sql中连接两个字符串并用0填充一个字符串?
【发布时间】:2008-12-17 18:01:00
【问题描述】:

我在一个表中有两个字段。一个包含 BTA、BEA、REA 等值。另一个包含 1,2,63,103 等值。

我想组合这两个字段,使它们看起来像这样 BTA001、BTA002、BTA063、BTA103。

请注意,如果数字不是 3 个字符的长度,我想在数字的左侧填充一些 0 以使其等于 3。

我该怎么做呢?表中的字段称为Type,分别对应BTA、BEA、REA,Id是对应1、2、63、103的字段。

【问题讨论】:

    标签: sql-server tsql


    【解决方案1】:
    select Type + right('00' + cast(id as varchar(10)), 3)
    from ...
    

    编辑:如果 id 可以为 null 并且您希望显示零,您可以这样做:

    select Type + right('00' + cast(isnull(id, 0) as varchar(10)), 3) 
    from ...
    

    【讨论】:

    • 你的答案和 Learning 的主要区别是什么?
    • 很少。我假设您总是会从 Id 列中得到一个个位数的数字,在这种情况下,您只需要在前面加上两个零。 CAST 是 ANSI 标准(因此可移植),而 CONVERT 是特定于 SQL Server 的,但为您提供更灵活的转换选项。
    • 如果 Id 列可以包含 null 怎么办?
    • 在这种情况下取​​决于你想要什么。我编辑了我的答案以提供一个选项。您实际上可能根本不想要这些行,在这种情况下,您应该在 where 子句中排除它们
    【解决方案2】:

    选择 C1 + right(('000' + cast(C2 as nvarchar(10)),3) as

    从 t1 开始

    【讨论】:

      【解决方案3】:

      选择 FIELD1 + RIGHT('000' + CONVERT(VARCHAR,FIELD2), 3)

      【讨论】:

      • 你的实现和 OrbMan 的有什么区别?
      猜你喜欢
      • 2021-07-06
      • 1970-01-01
      • 1970-01-01
      • 2011-11-04
      • 2022-11-16
      • 2022-06-29
      • 1970-01-01
      相关资源
      最近更新 更多