我有一个名为 like 的列'Max Mustermann',我需要解析first_name和last_name. 问题是,有时会出现一个企业名称,而不是一个名称,而是几个人的名称或由 4-5 个单词组成的名称。正常名称必须至少包含 2 个字母。NULL在这种情况下,我想得到first_nameand last_name。告诉我,如何使用 SQL 或 PL / SQL(DB:Oracle 12.2)来完成?
输入示例:
NAME
Max Mustermann
Doe, John
Ursula von der Leyen
Рога и Копыта
J Li
结果,我想得到以下信息:
FIRST_NAME LAST_NAME
Max Mustermann
John Doe
NULL NULL
NULL NULL
NULL Li
自己尝试解决方案:
select
regexp_replace(name, '^([[:alpha:]]{2,})[[:space:]]+([[:alpha:]]{2,})$', '\1') as first_name,
regexp_replace(name, '^([[:alpha:]]{2,})[[:space:]]+([[:alpha:]]{2,})$', '\2') as last_name
from table_name
自己尝试的解决方案通常适用于由两个单词组成的名称。如果有更多的单词,那么整个原始值都落入first_name和 into 。last_name
不完美,但为什么不: