Oracle 10G регулярное выражение для имени - PullRequest
2 голосов
/ 05 декабря 2011

Я пытаюсь написать regexp_replace, чтобы создать дружеское имя для некоторых сотрудников.В настоящее время они хранятся как FIRST <POSSIBLE MIDDLE INITIAL> LAST <POSSIBLE SUFFIX> <MULTIPLE WHITESPACE> SITE_ID

Например,

JOHN SMITH          ABC
JOHN Q SMITH        ABC
JOHN Q SMITH III    ABC

Я пытаюсь написать регулярное выражение, чтобы получилось:

Smith, John
Smith, John Q
Smith III, John Q

Азбуку «Идентификатор сайта» не нужно включать в мои выходные данные.

Это то, что я пытался с небольшим успехом:

regexp_replace(
    employee_name, 
    '^(\S+)\s(\S+)\s(\S+)',
             '\3, \1 \2'
)

Кроме того, я использую Oracle 10G.Любая помощь будет принята с благодарностью!

1 Ответ

1 голос
/ 05 декабря 2011

Если ваши имена не показывают проблемы, на которые указывает Руах, то есть, нет ни однобуквенных имен или фамилий, ни испанских имен, вы можете попробовать это регулярное выражение:

^(\S+)\s(\S\s)?(\S+)(\s\S+)?\s\s+\S+$

замена должна быть:

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