用于Name的Oracle 10G regexp

时间:2011-12-05 17:47:31

标签: sql oracle oracle10g

我正在尝试编写一个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

ABC“站点ID”不需要包含在我的输出中。

这是我尝试的但收效甚微:

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

另外,我使用的是Oracle 10G。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

如果你的名字没有显示ruakh指出的问题,即没有单字母的姓名或姓氏,也没有西班牙语名字,你可以试试这个正则表达式:

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

替换应该是:

\3\4, \1\2