我需要清理字符串字段并替换十几种不同的模式。我知道你可以使用嵌套的REPLACE函数,但是这样做很多是一个真正的痛苦,键入并使一些非常丑陋的代码。
有更有效的方法吗?
答案 0 :(得分:3)
您可以执行嵌套替换。 。 。没有嵌套。这是一种方法:
select t.*, t_r12.col_r
from t outer apply
(select replace(t.col, 'in1', 'out1') as col_r) t_r01 outer apply
(select replace(t_r01.col_r, 'in2', 'out2') as col_r) t_r02 outer apply
(select replace(t_r02.col_r, 'in3', 'out3') as col_r) t_r03 outer apply
. . .;
在这种情况下,我认为outer apply
不会增加任何(重大)开销。但是,这确实需要命名所有中间结果。
答案 1 :(得分:1)
您可以编写一个使用REGEX进行替换的CLR过程。