如果全名总是由3个部分组成(正如您所说的),那么它相对简单,使用
REGEXP_SUBSTR
正则表达式函数:
SQL> with test (fullname) as
2 (select 'Metro Goldwyn Mayer' from dual
3 )
4 select regexp_substr(fullname, '\w+', 1, 1) first_name,
5 regexp_substr(fullname, '\w+', 1, 2) middle_name,
6 regexp_substr(fullname, '\w+', 1, 3) last_name
7 from test;
FIRST_NAME MIDDLE_NAME LAST_NAME
-------------------- -------------------- --------------------
Metro Goldwyn Mayer
SQL>
使用
经典
SUBSTR
+
INSTR
组合,但-这不是
漂亮的
解决方案:
SQL> with test (fullname) as
2 (select 'Metro Goldwyn Mayer' from dual
3 )
4 select substr(fullname, 1, instr(fullname, ' ', 1, 1) - 1) first_name,
5 substr(fullname,
6 instr(fullname, ' ', 1, 1) + 1,
7 instr(fullname, ' ', 1, 2) - instr(fullname, ' ', 1, 1) - 1) middle_name,
8 substr(fullname,
9 instr(fullname, ' ', 1, 2) + 1) last_name
10 from test;
FIRST_NAME MIDDLE_NAME LAST_NAME
-------------------- -------------------- --------------------
Metro Goldwyn Mayer
SQL>
这是你任务的第一部分;自己编写INSERT语句。如果您无法使其工作,请编辑您的初始消息,提供您设法工作的代码,解释问题所在,并有人会提供帮助。