如何在两个句点之间选择字符串(SQL Server 2012)

时间:2017-05-04 22:16:53

标签: sql sql-server tsql

假设我有一堆部件号,我想要一个列在第一个句点之后和第二个句点之前返回字符串。我看了其他类似的问题,但无法弄清楚

所以,假设我有零件号列表,例如:

10416.1.1.4
10416.1.1.7
10416.1.1.1
10416.2.3
10416.2.2
10416.3.1.2
10416.3.1.3
10416.4.1.1
10416.10.1
10416.10.2
10416.11.1.1

我应该让我的专栏回复:

1
1
1
2
2
3
3
4
10
10
11

使用SQL Server 2012,提前感谢

编辑:这是我的代码,这会返回一个表,但排序遍布整个地方,PartNo列就是我要分割的内容

SELECT DISTINCT OrderDet.OrderNo, Scheduling.JobNo, OrderDet.PartNo, 
OrderDet.Priority
FROM Scheduling LEFT JOIN OrderDet ON Scheduling.JobNo = OrderDet.JobNo
WHERE Scheduling.WorkCntr = 'Glazing'
ORDER BY OrderDet.Priority DESC

1 个答案:

答案 0 :(得分:5)

您可以将ParseName()与Reverse()

一起使用
Declare @YourTable Table ([SomeCol] varchar(50))
Insert Into @YourTable Values
 ('10416.1.1.4')
,('10416.1.1.7')
,('10416.1.1.1')
,('10416.2.3')
,('10416.2.2')
,('10416.3.1.2')
,('10416.3.1.3')
,('10416.4.1.1')
,('10416.10.1')
,('10416.10.2')
,('10416.11.1.1')

Select * 
      ,NewCol = reverse(ParseName(reverse(SomeCol),2))
from @YourTable

返回

SomeCol         NewCol
10416.1.1.4     1
10416.1.1.7     1
10416.1.1.1     1
10416.2.3       2
10416.2.2       2
10416.3.1.2     3
10416.3.1.3     3
10416.4.1.1     4
10416.10.1      10
10416.10.2      10
10416.11.1.1    11