У нас есть бизнес-сценарий, в котором исходные данные заполняются как «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))))))))))
@CBroe Спасибо за решение. Можете ли вы помочь мне переписать код на небольшом примере?
Лучше всего предположить - что-то вроде REG_REPLACE( LAST_NAME, 'I$', '')
...? $
чтобы привязать шаблон в конце, чтобы он нашел I
только в том случае, если это последний символ.
Вы пробовали что-то вроде:
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?
«он удаляет символ «I» для всех вхождений» - согласно документации, это то, что делает REPLACESTR - он заменяет все вхождения, которые может найти. Вероятно, вам лучше сделать все это, используя REG_REPLACE.