要求:希望将以下所有内容实现为一个regex_replace
还想知道replace
的性能是否比regex_replace
快
下面是我尝试过的
with c as (select ' abc \n def\n' as t
union
select 'abc\tdef' as t)
select t,regexp_replace(t, '[,\t\n]','') from c;
with c as (select ' abc de"f\n' as t
union
select 'abc\td|ef' as t)
select t,replace(replace(replace(t, '\n',' '),'"','\''),'|','-') from c;
答案 0 :(得分:1)
regexp_replace函数将仅匹配一个模式并将其替换为文字值,因此您不能使其根据所匹配的内容有选择地进行替换。您可以编写一个UDF一步来做到这一点,这将使您的SQL更加整洁,特别是如果您必须将其放入很多语句中时。这是所有三个替代品:
#1 DateTime Y Var1 Var2 Var3 ID ID2
#2 3/1/20 0.67 0.00 0.00 0.00 0 0
#3 4/1/20 0.31 0.00 0.11 0.00 Var2 1
#4 5/1/20 0.96 0.00 0.00 0.00 0 0
#5 6/1/20 0.28 0.00 0.00 0.40 Var3 2
#6 6/1/20 0.28 0.00 0.00 0.00 0 0
#7 8/1/20 0.48 0.00 0.00 0.00 0 0
#8 9/1/20 0.07 0.94 0.00 0.00 Var1 3
#9 11/1/20 0.94 0.00 0.00 0.00 0 0
#10 13/1/20 0.05 0.00 0.00 0.00 0 0
#11 14/1/20 0.04 0.00 0.00 0.53 Var3 2
#12 15/1/20 0.93 0.00 0.00 0.00 0 0
#13 17/1/20 0.30 0.00 0.00 0.32 Var3 2
#14 18/1/20 0.75 0.00 0.00 0.00 0 0
#15 22/1/20 0.99 0.00 0.00 0.00 0 0
#16 23/1/20 0.32 0.15 0.00 0.00 Var1 3
#17 25/1/20 0.51 0.00 0.00 0.00 0 0
#18 26/1/20 0.15 0.00 0.00 0.00 0 0
#19 27/1/20 0.78 0.00 0.00 0.15 Var3 2
#20 29/1/20 0.83 0.00 0.00 0.00 0 0
#21 30/1/20 0.10 0.00 0.00 0.00 0 0