我尝试对Postgresql数据库的列中的字符串进行链式操作。如果我分别执行这两个操作,那么它会起作用:
select REGEXP_REPLACE(REGEXP_REPLACE(REGEXP_REPLACE(TRANSLATE (upper('A BUCHE'),'ÇÀÄÂÉÈÊËÏÎÌÖÔÒÜÛÙ-','CAAAEEEEIIIOOOUUU '), '\y[A-Z]{1}\y', '', 'g'),'LA','','g'),'DE','','g');
select split_part('BUCHE',' ', 1);
第一个为BUCHE,第二个为BUCHE。
但是当我链接它们时,结果是一个空字符串
select split_part(REGEXP_REPLACE(REGEXP_REPLACE(REGEXP_REPLACE(TRANSLATE (upper('A BUCHE'),'ÇÀÄÂÉÈÊËÏÎÌÖÔÒÜÛÙ-','CAAAEEEEIIIOOOUUU '), '\y[A-Z]{1}\y', '', 'g'),'LA','','g'),'DE','','g'),' ', 1);
你知道怎么了吗?
第二个问题:
在进行一些匹配之前,我会执行所有这些操作以更正姓氏和名字。由于我的表有1500万行,因此从性能角度来看更好:
答案 0 :(得分:0)
我找到了答案:有一个空白。我在链条上加了装饰
select split_part(TRIM(REGEXP_REPLACE(REGEXP_REPLACE(REGEXP_REPLACE(TRANSLATE(upper('de la a buche'),) ','g'),'LA','','g'),'DE','','g')),'',1);