【问题标题】:Get the right number of a value in SQL Server using substring使用子字符串在 SQL Server 中获取正确的值编号
【发布时间】:2017-01-23 10:46:36
【问题描述】:

我的 SQL Server 中有这些数据:

1/2
1/4
2/23
12/13
1/10
...

我需要把这些改成002,004,023,013,010,..

我只需要选择我的值的结束(右)零件号。我之前使用此代码获得了 LEFT 部分:

RIGHT('000' + LEFT(SheetNumber, CHARINDEX('/', SheetNumber) - 1), 3)

【问题讨论】:

    标签: sql-server substring


    【解决方案1】:

    首先你需要像这样得到正确的部分:

    declare @table table (SheetNumber varchar(10))
    insert into @table values ('1/2')
    insert into @table values ('2/23')
    
    select Right(SheetNumber, len(SheetNumber) - CHARINDEX('/',SheetNumber)) from @table
    

    这会给你这个:

    2
    23
    

    现在在此基础上在其前面填充 0

    declare @table table (SheetNumber varchar(10))
    insert into @table values ('1/2')
    insert into @table values ('2/23')
    
    select Right('000' + Right(SheetNumber, len(SheetNumber) - CHARINDEX('/',SheetNumber)), 3) from @table
    

    这会给你这个:

    002
    023
    

    【讨论】:

      【解决方案2】:

      你快到了

      Declare @YourTable table (SheetNumber varchar(50))
      Insert Into @YourTable values
      ('1/2'),
      ('1/4'),
      ('2/23'),
      ('12/13'),
      ('1/10')
      
      Select right('000'+substring(SheetNumber,CHARINDEX('/',SheetNumber) + 1,10),3)
       From @YourTable
      

      返回

      (No column name)
      002
      004
      023
      013
      010
      

      【讨论】:

      • 谢谢大家。
      【解决方案3】:

      试试这个,

      SELECT Right('000' + RIGHT(SheetNumber,LEN(SheetNumber) - CHARINDEX('/',SheetNumber) ), 3)
      

      SELECT RIGHT(REPLACE(@SheetNumber,'/','/000'),3)
      

      【讨论】:

      • Plus1 我喜欢你的第二个选项。优雅。
      • 这里也一样。第二个选项真的很好
      猜你喜欢
      • 1970-01-01
      • 2013-04-07
      • 1970-01-01
      • 2020-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-18
      • 1970-01-01
      相关资源
      最近更新 更多