T SQL - 在第一个' - '之后将列拆分为两列

时间:2016-10-21 16:03:05

标签: sql-server tsql ssms

得到dbo,我需要在第一个' - '字符之后将其拆分为两个。致力于SSMS 2014

电子表格中的示例: example

PartNumber包含需要分解的数据。 部分 - 首先需要包含所有字符' - ' 数字 - 首先需要包含所有字符' - '

任何帮助表示赞赏 感谢

4 个答案:

答案 0 :(得分:0)

您需要LEFTRIGHT。要查找要分配到LEFTRIGHT的位置,请{我们CHARINDEX

答案 1 :(得分:0)

也许是这样的?

SELECT parts.PartID as ID,
Part = (SELECT TOP 1 value FROM STRING_SPLIT(parts.PartNumber, '-')),
Number = (SELECT value FROM STRING_SPLIT(parts.PartNumber, '-') LIMIT 1 OFFSET 1),
FROM dbo.PartsTable parts

答案 2 :(得分:0)

你可以试试这个。

SELECT 
    PartNum
,   REPLACE(LEFT(PartNum,  CHARINDEX('-', PartNum)),'-', '') as 'PartNum First'
,   REPLACE(SUBSTRING(PartNum,CHARINDEX('-', PartNum), LEN(PartNum)), '-','') as 'PartNum Second'

FROM Part

上面的查询在找到'-'时会拆分PartNum字符串,然后将其替换为空格,以便获得预期的结果。

我尝试了它并且它有效。希望它对你有用。

答案 3 :(得分:0)

Declare @YourTable table (PartNumber varchar(50))
Insert Into @YourTable values 
('HHY-12-1800-2'),
('FC-P-41-4')


Select PartNumber
      ,Part   = Left(PartNumber,CharIndex('-',PartNumber)-1)
      ,Number = Substring(PartNumber,CharIndex('-',PartNumber)+1,Len(PartNumber))
 From  @YourTable

返回

PartNumber      Part    Number
HHY-12-1800-2   HHY     12-1800-2
FC-P-41-4       FC      P-41-4