Sql 用于名称的Oracle 10G regexp
我正在尝试编写一个regexp_替换,为一些员工创建一个“友好”的名字。它们当前存储为Sql 用于名称的Oracle 10G regexp,sql,oracle,oracle10g,Sql,Oracle,Oracle10g,我正在尝试编写一个regexp_替换,为一些员工创建一个“友好”的名字。它们当前存储为FIRST-LAST SITE\u ID 比如说, JOHN SMITH ABC JOHN Q SMITH ABC JOHN Q SMITH III ABC 我正在尝试编写一个正则表达式,以便最终得到: Smith, John Smith, John Q Smith III, John Q ABC“站点ID”不需要包含在我的输出中 这是我尝试的,但收效甚微: regex
FIRST-LAST SITE\u 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。任何帮助都将不胜感激 如果您的姓名没有显示ruakh指出的问题,即没有单字母姓名或姓氏,也没有西班牙裔姓名,您可以尝试以下regexp:
^(\S+)\s(\S\s)?(\S+)(\s\S+)?\s\s+\S+$
替代品应为:
\3\4, \1\2
johnqiii
是中间名Q和姓III(III,johnq
),还是姓Q和后缀III(qiii,JOHN
)?这种名称的混乱总是有风险的,因为人们的名字并不总是符合我们的先入之见;例如,如果姓氏包含一个空格,比如加布里埃尔·加西亚·马尔克斯(Gabriel García Márquez),该怎么办?是的。约翰三世的中间名是Q,姓氏是III。