子串并在sql server中拆分

时间:2016-09-05 09:16:53

标签: sql-server substring

我在sql server中有这些数据,你可以在这里看到:

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

我需要将这些更改为001,001,002,012,001,..

我用它。但它不起作用

LEFT(SheetNumber,LEN(SheetNumber)-CHARINDEX('/',SheetNumber))

我的查询

SELECT  [Id]

      ,LEFT(SheetNumber,LEN(SheetNumber)-CHARINDEX('/',SheetNumber))


      ,[SubmitDateTime]
  FROM [SPMS2].[dbo].[Lines] where SheetNumber  like '%/%'

enter image description here

3 个答案:

答案 0 :(得分:3)

你不需要使用LEN。只需使用

LEFT(SheetNumber,CHARINDEX('/',SheetNumber) - 1)

要使它成为前面有0的3位数,你可以使用类似的东西

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

答案 1 :(得分:2)

试试这个

{}

答案 2 :(得分:1)

试试这个

DECLARE @tbl TABLE(SheetNumber VARCHAR(100));
INSERT INTO @tbl VALUES
 ('1/2')
,('1/4')
,('2/23')
,('12/13')
,('1/10');

SELECT STUFF(
   (
    SELECT ',' + REPLACE(STR(LEFT(SheetNumber,CHARINDEX('/',SheetNumber) - 1),3),' ','0')
    FROM @tbl
    FOR XML PATH('')
   ),1,1,'');

结果

001,001,002,012,001