记下SQL语句,将Student表的数据插入MM_Student,并附有以下指南:
FullName 由三个名称分区组成,例如
FirstName:第一个空格字符前FullName左侧的第一个单词
MiddleName: FullName左侧的第二个和第三个单词(如果存在)
FamilyName: FullName的最后一个单词始终被视为Family或LastName。
每个名称都必须包含姓氏。
create table Student
(StuId CHAR(9),
FullName VARCHAR2(30) NOT NULL,
Address VARCHAR2(20),
City VARCHAR2(15),
PostalCode VARCHAR2(6),
Constraint PK_Stuid PRIMARY KEY (StuId)
);
create table MM_Student
(StuId CHAR(9),
FirstName VARCHAR2(10) NOT NULL,
MiddleName VARCHAR2(20),
FamilyName VARCHAR2(10) NOT NULL,
Address VARCHAR2(20),
City VARCHAR2(15),
PostalCode VARCHAR2(5),
Constraint PK_Stuid PRIMARY KEY (StuId)
);
答案 0 :(得分:0)
如果FULLNAME总是由3个部分组成(这就是你所说的),那么使用Representable
正则表达式函数就相对简单了:
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
这是你任务的第一部分;自己编写INSERT语句。如果你无法使它工作,请编辑你的初始信息,提供你设法工作的代码,解释什么是错的,有人会帮助。