替换SQL Server 2012中的点,逗号和连字符

时间:2016-04-20 16:07:56

标签: sql sql-server regex sql-server-2012

我在标题中提到了一个问题。我有一个包含一些部分的数据库,其代码如下:

ID | Part_name | Part_code
---+-----------+-----------
1  | ...       | 123.1-233
2  | ...       | 12.32,211
3  | ...       | 123-12,22

我想执行SELECT查询,该查询将返回没有点,逗号和连字符的结果。我认为可以使用REPLACE()完成,但我无法使其正常工作。

我试过了:

select replace(Parts.Part_code, '.', '') 
from Parts;

并且它可以正常工作,但我无法使用任何正则表达式进行多个符号,似乎SQL Server忽略了方括号,因为它无法使用:

select replace(Parts.Part_code, '[\.]', '') 
from Parts;

任何帮助?

2 个答案:

答案 0 :(得分:8)

删除多个替换多个字符我害怕

SELECT REPLACE(REPLACE(REPLACE(Part_code, ',', ''), '.', ''), '-', '') 
FROM Parts;

答案 1 :(得分:0)

需要多次替换。在没有遇到SQL Server中的嵌套限制的情况下进行替换的一种方法是使用outer apply

select p3.Part_code
from parts p outer apply
     (select replace(p.Part_code, ',', '') as Part_code) p1 outer apply
     (select replace(p1.Part_code, '.', '') as Part_code) p2 outer apply
     (select replace(p2.Part_code, '-', '') as Part_code) p3 ;