Использование функций REG_MATCH и REPLACETR в Informatica для замены суффиксного символа

У нас есть бизнес-сценарий, в котором исходные данные заполняются как «FIRST FINANCIAL SECURITIES OF AMERICA I», где «I» заполняется как суффикс. Нам нужно удалить символ «I» из суффикса и получить данные как «ПЕРВЫЕ ФИНАНСОВЫЕ ЦЕННЫЕ БУМАГИ АМЕРИКИ», но когда мы используем приведенный ниже код в преобразовании выражения, он удаляет символ «I» для всех случаев и выдает следующее: поместите строку «FRST FNANCAL SECURTES OF AMERCA».

Как я могу достичь вышеуказанной логики, используя REG_MATCH и REPLACETR?

**--parse suffix txt from last name**
IIF(REG_MATCH(LAST_NAME,'.*\sI\s.*')  OR REG_MATCH(LAST_NAME,'.*\sI'),REPLACESTR(1,LAST_NAME,'I',''),
IIF(REG_MATCH(LAST_NAME,'.*\sII\s.*')  OR REG_MATCH (LAST_NAME,'.*\sII'),REPLACESTR(1,LAST_NAME,'II',''),
IIF(REG_MATCH(LAST_NAME,'.*\sIII\s.*')  OR REG_MATCH(LAST_NAME,'.*\sIII'),REPLACESTR(1,LAST_NAME,'III',''),
IIF(REG_MATCH(LAST_NAME,'.*\sIV\s.*')  OR REG_MATCH(LAST_NAME,'.*\sIV'),REPLACESTR(1,LAST_NAME,'IV',''),
IIF(REG_MATCH(LAST_NAME,'.*\sV\s.*')  OR REG_MATCH(LAST_NAME,'.*\sV'),REPLACESTR(1,LAST_NAME,'V',''),
IIF(REG_MATCH(LAST_NAME,'.*\sJR\s.*')  OR REG_MATCH(LAST_NAME,'.*\sJR'),REPLACESTR(1,LAST_NAME,'JR',''),
IIF(REG_MATCH(LAST_NAME,'.*\sJR.\s.*')  OR REG_MATCH(LAST_NAME,'.*\sJR.'),REPLACESTR(1,LAST_NAME,'JR.',''),
IIF(REG_MATCH(LAST_NAME,'.*\sSR\s.*')  OR REG_MATCH(LAST_NAME,'.*\sSR'),REPLACESTR(1,LAST_NAME,'SR',''),
IIF(REG_MATCH(LAST_NAME,'.*\sSR.\s.*')  OR REG_MATCH(LAST_NAME,'.*\sSR.'),REPLACESTR(1,LAST_NAME,'SR.',''),
IIF(REG_MATCH(LAST_NAME,'.*\s3RD\s.*')  OR REG_MATCH(LAST_NAME,'.*\s3RD'),REPLACESTR(1,LAST_NAME,'3RD',''),
LAST_NAME))))))))))

«он удаляет символ «I» для всех вхождений» - согласно документации, это то, что делает REPLACESTR - он заменяет все вхождения, которые может найти. Вероятно, вам лучше сделать все это, используя REG_REPLACE.

CBroe 03.07.2024 13:45

@CBroe Спасибо за решение. Можете ли вы помочь мне переписать код на небольшом примере?

karthik 03.07.2024 13:49

Лучше всего предположить - что-то вроде REG_REPLACE( LAST_NAME, 'I$', '') ...? $чтобы привязать шаблон в конце, чтобы он нашел I только в том случае, если это последний символ.

CBroe 03.07.2024 14:05
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
3
63
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы пробовали что-то вроде:

IIF(REG_MATCH(LAST_NAME, '.*\\sI$'),  <- NOTE: no trailing asterix
REG_REPLACE(LAST_NAME, '\\sI$', ''),
SOURCE_COLUMN)

Ваш первый REG_MATCH возвращает true, если в любом месте I есть LAST_NAME, окруженный пробелами. Я не думаю, что это желательно. Тогда вы используете REPLACESTR там, где, я думаю, следует использовать REG_REPLACE. Просмотрите и дайте мне знать в случае возникновения дальнейших вопросов.

У меня есть еще одно требование: у нас есть два набора данных, например «HOUSE ACCOUNT — WELLS FARGO — I», где нужно удалить суффикс «- I», и еще один набор данных «3RD NAT-SEDALIA /INV SV/INVEST», где мне нужно удалите префикс «3RD». В настоящее время я использую следующий код, и он не работает IIF(REG_MATCH(LAST_NAME,'.*\sI\s.*') OR REG_MATCH(LAST_NAME,'.*\sI'),REG_REPLACE(LAST_NAME ,'I$','') . IIF(REG_MATCH(LAST_NAME,'.*\sJR\s.*') OR REG_MATCH(LAST_NAME,'.*\sJR'),REPLACETR(1,LAST_NAME,'JR', ''‌​) Можете ли вы мне помочь в этом, @Maciejg?

karthik 15.07.2024 15:43

Другие вопросы по теме

Не удается подключить Informatica к базе данных Oracle в Docker
Что означает сохранение постоянного значения переменной сопоставления в информатике при импорте сопоставления (XML-файл) в репозиторий
Конвертировать ниже исходный файл в Notepad++ и Informatica. См. заданную исходную таблицу и выходную таблицу, которую я хочу
Я хочу присвоить «Y» повторяющимся записям и «N» записям Uinque и отобразить эти флаги «Y» и «N» в столбце «Повторяющиеся»
Как немедленно остановить рабочий процесс при сбое сеанса?
Как выполнить цикл в информационном центре питания?
Рабочий процесс перезапуска ПК Informatica с другим запросом sql
Обновить стратегию с помощью DD_INSERT
Сравнение значений между записями в таблице с помощью Informatica PowerCenter
Какой из них лучше с точки зрения производительности в Informatica Powercenter? Использовать преобразование сортировщика или добавить количество отсортированных портов в квалификаторе источника?