задачи цепочки операций при модификации строк - PullRequest
0 голосов
/ 30 января 2019

Я пытаюсь связать операции над строками в столбцах базы данных 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 миллионов строк, что лучше с точки зрения производительности:

  • для цепочки операций над строками, как я делал
  • или для одной операции за раз

1 Ответ

0 голосов
/ 30 января 2019

Я нашел ответ: там был пробел.Я добавил обрезку в цепочку

select split_part (TRIM (REGEXP_REPLACE (REGEXP_REPLACE (REGEXP_REPLACE (TRANSLATE (верхний (de la a buche))), 'ÇÀÄÂÉÈÊËÏÎÌÖÔÒÜÛÙ -', 'CAAAEEEEIIIOOOUUUU'), 'y [AZ] {1} \ y ',' ',' g '),' LA ',' ',' g '),' DE ',' ',' g ')),' ', 1);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...