如何在SQL Server中删除任何字符,然后删除数字?

时间:2019-04-28 06:22:48

标签: sql sql-server

我有一列包含以下数据:

401-305-3069703-1---------------------------------------------------------
1-1499964-305-395---------------------------------------------------------
1-14995964-4405-395---------------------------------------------------------
....

如何删除最后一个数字之后的所有破折号和任何字符,例如:

401-305-3069703-1
1-1499964-305-395
1-14995964-4405-395

1 个答案:

答案 0 :(得分:4)

您可以尝试使用PATINDEXREVERSE

SELECT LEFT(@str, LEN(@str) - PATINDEX('%[0-9]%', REVERSE(@str)) +1)

Online Demo

此处PATINDEX用于使用通配符模式查找任何数字的最后一次出现,因为存在多个数字,并且我们想查找最后一个数字索引,因此我们在之前使用REVERSE将其反转应用PATINDEX

一旦找到索引,就使用LEFT从文本中获取子字符串。