删除"-"之前和"-"之后的字符,保留包含多个字符"-"的字符串中间



我在数据库中得到了以下条目(varchar数据类型(:

5-359-258756-54
2-456-58994-85
4-458 -478698-42
5-876-5878-26

我想排除第一个数字加上字符'-',最后两个数字加前一个'-',并删除中间字符'-'中可用的空格。

最终结果必须是:

359-258756
456-58994
458-478698
876-5878

我试着主要使用charindex&patidix替换为","基于论坛建议,但没有显示预期结果,我能返回的最接近的是458-478698-42(删除第一个数字加字符和空格(,

我该如何解决?

如果字符串格式一致,则可以使用parsename()

示例

Declare @YourTable table (SomeCol varchar(50))
Insert Into @YourTable values
('5-359-258756-54')
,('2-456-58994-85')
,('4-458 -478698-42')
,('5-876-5878-26')
Select *
,NewVal = replace(parsename(replace(SomeCol,'-','.'),3)
+'-'
+parsename(replace(SomeCol,'-','.'),2)
,' ','')
From  @YourTable

结果

SomeCol             NewVal
5-359-258756-54     359-258756
2-456-58994-85      456-58994
4-458 -478698-42    458-478698
5-876-5878-26       876-5878

最新更新