Я пытаюсь связать операции над строками в столбцах базы данных postgresql.Если я выполняю эти 2 операции по отдельности, это работает:
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, также дает 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);
Знаете ли вы, что не так?
Второй вопрос:
Я делаю все это, чтобы исправить фамилии и имена, прежде чем выполнять какое-либо сопоставление.Поскольку в моей таблице 15 миллионов строк, что лучше с точки зрения производительности:
- для цепочки операций над строками, как я делал
- или для одной операции за раз