【问题标题】:T-SQL : concatenate 2 numbers and get a string [duplicate]T-SQL:连接2个数字并得到一个字符串[重复]
【发布时间】:2021-11-23 01:26:34
【问题描述】:

我正在尝试连接两个数字,但结果我需要一个字符串。如果我添加两个数字,则会删除零。我需要一个 10 个字符的字符串

select
    case 
        when Len(CODBADGE) = 1 then '000000000'+ CODBADGE
        when Len(CODBADGE) = 2 then '00000000'+ CODBADGE
        when Len(CODBADGE) = 3 then '0000000'+ CODBADGE
        when Len(CODBADGE) = 4 then '000000'+ CODBADGE
        when Len(CODBADGE) = 5 then '00000'+ CODBADGE
        when Len(CODBADGE) = 6 then '0000'+ CODBADGE
        when Len(CODBADGE) = 7 then '000'+ CODBADGE
        when Len(CODBADGE) = 8 then '00'+ CODBADGE
        when Len(CODBADGE) = 9 then '0'+ CODBADGE
        when Len(CODBADGE) = 10 then CODBADGE
        else NULL
    end as code10
from
    TAB_BADGE

代码标记

1 
10
100
1000
10000
100000
1000000
10000000
100000000
1000000000

结果:

0000000001 
0000000010
0000000100
0000001000
0000010000
0000100000
0001000000
0010000000
0100000000
1000000000

【问题讨论】:

  • 会容易得多:SELECT RIGHT('0000000000' + CODBADGE, 10) ....
  • 注:如果 CODBADGE 是一个 INT(从您的结果来看它是),那么您需要使用 RIGHT(CONCAT('0000000000', CODBADGE), 10) 代替,否则 0000000000 将被隐式转换为数字,并且 SQL Server 将执行加法而不是串联.你也可以使用FORMAT(x.CODBADGE, '0000000000'),但是FORMAT does not scale particularly well
  • @GarethD:正确 - 在这种情况下,请使用 SELECT RIGHT('0000000000' + CAST(CODBADGE AS VARCHAR(10)), 10)
  • 好的,谢谢。解决方法:SELECT RIGHT ('0000000000' + CAST (CODBADGE AS VARCHAR (10)), 10)

标签: sql-server tsql


【解决方案1】:

你可以使用复制功能

SELECT left( replicate( '0', 10 ), 10 - len( CODBADGE) ) + cast(CODBADGEas varchar(10)) as code10 FROM TAB_BADGE

或者你可以使用正确的功能

SELECT  RIGHT('0000000000' + CAST(CODBADGE AS VARCHAR(10)), 10) as code10 FROM TAB_BADGE

【讨论】:

    【解决方案2】:

    另一个选项是format()

    要明确...由于性能问题,应谨慎使用。

    select code10 = format(CODBADGE,'0000000000')
     From  TAB_BADGE
    

    【讨论】:

      【解决方案3】:

      你可以使用 ada.strings.fixed."0" (Len(CODBADGE)," ")+Len(CODBADGE) 一行而不是多行 没有案例没有什么

      【讨论】:

      • ada.strings.fixed."0" 是什么?那不是 SQL Server 系统表或函数
      • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
      猜你喜欢
      • 2011-10-23
      • 2018-10-15
      • 2011-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-04
      • 1970-01-01
      • 2013-06-28
      相关资源
      最近更新 更多